
	
//Diese Variablen werden in behaviors.htc benutzt
var selectionModeAll=false;
var selectionModeAllSelect=false;
var selectionCount=0;	

//Diese Variable speichert das HTML-Element, dem von einem Popup-Fenster 
//Werte übergeben werden
var modalDialogArgumentReceiver;   
//Fehler ausschalten
//window.onerror = stopError;
function stopError ()
{
	
	return false;
	var res ="";
	if(stopError.arguments!=null && stopError.arguments.length>=1)
		window.status = stopError.arguments[0];
	return true;
}

var enterPressed=false;
var obligatoryFieldsChecked=false;
var actionSet=false;


//Hier werden die letzten Werte, die aus einer Auswahlliste gewählt wurden, gespeichert
//Per Doppelklick werden diese Werte automatisch wieder ausgewählt
var last_combo_selection_value = new Array();
var last_combo_selection_text = new Array();

function reuseLastComboValue(field_name, prefix)
{
	if(event!=null && event.srcElement!=null && event.srcElement.tagName!=null &&
		event.srcElement.tagName.toLowerCase()=="select") return;
	//debugger;
	try
	{
	
		if( last_combo_selection_value[field_name]!=null && last_combo_selection_text[field_name]!=null)
		{
			var input_hidden = Obj(prefix + "_" + field_name);
			var span = Obj("span_" + prefix + "_" + field_name);
			if(input_hidden!=null && span!=null)
			{
				input_hidden.value=last_combo_selection_value[field_name];
				span.innerHTML = last_combo_selection_text[field_name];
			}
			//Multiple selection
			var selectAvailable = document.getElementById("multiple_available_items_" +field_name+prefix);
			var selectSelected = document.getElementById("multiple_selected_items_" +field_name+prefix);
			if(selectAvailable!=null && selectSelected !=null)
			{
				var selectedValues = last_combo_selection_value[field_name];
				removeAllItems(field_name+prefix);
				var arr = selectedValues.split(",");
				for(var i=0; i<arr.length; i++)
				{
					
					setListboxIndex(selectAvailable,arr[i],true);
					addItem(field_name + prefix);
				}
			}
			//Text fields
			if(event==null || event.srcElement==null) return;
			var td = event.srcElement;
			var input = td.firstChild;
			if(td.tagName!=null && (td.tagName.toLowerCase()=="textarea" ||td.tagName.toLowerCase()=="input"))
				input = td;
			if(input!=null)
			{
				var inputTag = input.tagName!=null?input.tagName.toLowerCase():null;
				var inputType = input.type!=null?input.type.toLowerCase():null;
				if(inputType=="text" || inputTag =="textarea")
				{
					input.value = last_combo_selection_value[field_name];
				}
			}
		}
		
		
	}catch (err)
	{
		//window.status = "Error: " + err.description;
	}		
}

function displayCMSTables()
{
	var elemSrc = Obj("imgCMSTables");//Image-Button
	var elemLevel2 = "cmsTablesList"; //Element to be displayed
	
	if (Obj(elemLevel2).style.display =='none')
	{
		Obj(elemLevel2).style.display='';
		elemSrc.src = "images/arrow_up.gif";
		refreshImageView(elemSrc);
		openLinksGroup ('imgCMSTables',true);
	}
	else
	{
		Obj(elemLevel2).style.display='none';
		elemSrc.src = "images/arrow_down.gif";
		refreshImageView(elemSrc);
		openLinksGroup ('imgCMSTables',false);
	}
}

function displayLinksGroup(lg)
{
	if(lg==null) return;
	var img = Obj("imgLinksGroup_" +lg);
	var div = Obj("div_" + lg);
	if(img==null || div==null) return;
	
	if (div.style.display =='none')
	{
		div.style.display='';
		img.src = "images/arrow_up.gif";
		refreshImageView(img);
		openLinksGroup2 (lg,true);
	}
	else
	{
		div.style.display='none';
		img.src = "images/arrow_down.gif";
		refreshImageView(img);
		openLinksGroup2 (lg,false);
	}
}
function refreshImageView (img)
{
	if(img==null) return;
	while (!img.complete)
	{
		//img.src = img.src;
	}
}
function displayCMSTables2(Event)
{
	var res="";
	
	var elemSrc;
	if(isMS())
		elemSrc = Event.srcElement;//Image-Button
	else
		elemSrc = Event.target;
	var elemLevel2 = elemSrc.getAttribute("level2ID"); //Element to be displayed
	
	if (Obj(elemLevel2).style.display =='none')
	{
		Obj(elemLevel2).style.display='';
		Obj("aspLabelTableName").style.display='none';
		elemSrc.style.display="none";
		//Obj(elemLevel2).style.left=window.event.x-100;
		//Obj(elemLevel2).style.top=window.event.y+10;
		elemSrc.src = "images/arrow_up.gif";
		refreshImageView(elemSrc);
	}
	else
	{
		Obj(elemLevel2).style.display='none';
		elemSrc.src = "images/arrow_down.gif";
		refreshImageView(elemSrc);
		Obj("aspLabelTableName").style.display='';
		
	}
}
function showSubGroup(img,div_name)
{
	var elemSrc = window.event.srcElement;//Image-Button
	var elemLevel2 = elemSrc.getAttribute("level2ID"); //Element to be displayed
	var div = Obj(div_name);
	if (div==null) return;
	
	if (div.style.display =='none')
	{
		div.style.display='';
		img.src = "images/arrow_up2.gif";
		refreshImageView(img);
	}
	else
	{
		div.style.display='none';
		img.src = "images/arrow_down2.gif";
		refreshImageView(img);
	}
}
function showSubGroup2(div_name)
{
	var img = Obj("img_" + div_name);
	var div = Obj(div_name);
	if (div==null) return;
	
	if (div.style.display =='none')
	{
		div.style.display='';
		img.src = "images/arrow_up2.gif";
		refreshImageView(img);
		openLinksGroup(div_name,true);
	}
	else
	{
		div.style.display='none';
		img.src = "images/arrow_down2.gif";
		refreshImageView(img);
		openLinksGroup(div_name,false);
	}
}
function addNewItemToSelfReferenceList (field_name, btn)
{
	var tmpWidth="150px";
	
	if ( Obj(field_name)!=null)
	{	if(isMS())
			tmpWidth = Obj(field_name).currentStyle.width;
		else
			tmpWidth = Obj(field_name).style.width;
	}
	
	var newInput= "<input class='cms_new_reference_item' style='width:" + tmpWidth + "' id='" + field_name + "_new' name='" + field_name + "' type='text' value=''>";
	if (btn.value=="+")
	{
		btn.value="-";
		btn.title=GetString("DisplayList");
		Obj ("tmp_" + field_name).value = Obj("span_" + field_name).innerHTML;
		Obj("span_" + field_name).innerHTML = newInput;
		Obj(field_name + "_new").focus();
	}else
	{
		btn.value="+";btn.title=GetString("AddNewEntry");
		Obj("span_" + field_name).innerHTML = Obj ("tmp_" + field_name).value;
		Obj ("tmp_" + field_name).value = "";
	}
		
}
function showTablesOfDatabase(db)
{
	//Img ändern
	var img= Obj("database_img_" + String(db));
	
		
	var t = Obj ("aspTableTablesList");
	var row, id, pos;
	if (t==null) return;
	for (var i=0; i<t.rows.length;i++)
	{
		row = t.rows[i];
		id = row.id;
		if (id==null)
			continue;
		pos = id.indexOf("_");
		if (pos<0) continue;
		
		if (id.indexOf("group_")==0 && id.indexOf("_db_" + db)>0)//Display the tables of this group
		{
				
				if (row.style.display =="none")
				{
					row.style.display ="";
					img.src = "images/arrow_up2.gif";
					refreshImageView(img);
					//openLinksGroup("table_group_" + group,true);
				}
				else
				{
					row.style.display ="none";
					img.src = "images/arrow_down2.gif";
					refreshImageView(img);
					//openLinksGroup("table_group_" + group,false);
				}
		}
	}
}
function showTablesOfGroup2 (group)
{
	if(group==null && !icon) return;
	var rows = document.getElementsByTagName ("tr");
	if(!rows) return;
	for (var i=0; i<rows.length; i++)
	{
		var row = rows[i];
		if(!row) continue;
		if(!row.id) continue;
		if(row.id.indexOf (group+"_table_")==0)
		{
			if(row.style.display=="none")
				row.style.display="";
			else
				row.style.display="none";
		}
	}
	var icon = Obj("tables_group_" + group + "_icon");
	if(!icon) return;
	if(icon.src.indexOf("plus2.gif")>0)
	{
		icon.src = "images/minus2.gif";
		refreshImageView(icon);
	}
	else
	{
		icon.src = "images/plus2.gif";
		refreshImageView(icon);
	}
}
function showTablesOfGroup(db,group)
{
	
	//Img ändern
	var img= Obj("db_"+ db + "_table_group_img_" + String(group));
	
		
	var t = Obj ("aspTableTablesList");
	var row, id, pos;
	if (t==null) return;
	for (var i=0; i<t.rows.length;i++)
	{
		row = t.rows[i];
		id = row.id;
		if (id==null)
			continue;
		
		if (id.indexOf("db_" + db + "_group" + String(group) +"_")==0) //Display the tables of this group
		{
				
			if (row.style.display =="none")
			{
				row.style.display ="";
				img.src = "images/arrow_up2.gif";
				//openLinksGroup("db" + db + "_group_" + group,true);
				refreshImageView(img);
			}
			else
			{
				row.style.display ="none";
				img.src = "images/arrow_down2.gif";
				//openLinksGroup("db_" + db + "_group_" + group,false);
				refreshImageView(img);
			}
		}
	}
}

function navigateTo(id)
{
	if (record_has_been_changed)
	{
		var res=confirm(GetString("AreYouSureToProceedWithoutSaving"));
		
		if (!res)
			return false;
	}
	Obj("hidden_action").value="edit";

	Obj("hidden_selected_id").value=id;
	//Obj("actions").submit();
	return true;
}
function navigateToRecordNumber(inp)
{
	
	if(event.keyCode!=13) 
	{
		if(event.keyCode>=48 && event.keyCode <=57)
			return true;
		else
			return false;
	}
	if(inp==null) return false;
	if (record_has_been_changed)
	{
		var res=confirm(GetString("AreYouSureToProceedWithoutSaving"));
		if (!res)
			return false;
	}
	if(Obj("hidden_found_ids")==null) return false;
	var ids = Obj("hidden_found_ids").value;
	if(ids==null || ids=="")return false;
	var idsArr= ids.split(",");	
	if(idsArr==null) return false;
	var recNumber = parseInt(inp.value);
	Obj("aspBtnSave").disabled = true;
	
	if(recNumber<=0 || recNumber > idsArr.length)
	{
		alert (GetString("SpecifyANumberBetween1AndX").replace("{0}",idsArr.length));
		inp.select();
		return false;
	}
	Obj("hidden_action").value="edit";
	
	Obj("hidden_selected_id").value=idsArr[recNumber-1];
	Obj("actions").submit();
	
	return false;
}
function navigateToPage(id)
{
	if(Obj("hidden_action")!=null)
		Obj("hidden_action").value="list";
	if(Obj("current_page")!=null)
		Obj("current_page").value=id;	
	//Obj("actions").submit();
	return true;
}

function displayTasks(obj,Event)
{
	var elemSrc = obj;//Image-Button
	var elemLevel2 = "div_tasks";//elemSrc.getAttribute("level2ID"); //Element to be displayed
	
	if (Obj(elemLevel2).style.display =='none')
	{
		Obj(elemLevel2).style.display='';
		elemSrc.src = "images/arrow_up.gif";
		refreshImageView(elemSrc);
		openLinksGroup (obj.id,true);
	}
	else
	{
		Obj(elemLevel2).style.display='none';
		elemSrc.src = "images/arrow_down.gif";
		refreshImageView(elemSrc);
		openLinksGroup (obj.id,false);
	}
}

function displayReports(Event)
{
	var elemSrc = Obj('imgShowReports');//Image-Button
	var elemLevel2 = "div_reports";//elemSrc.getAttribute("level2ID"); //Element to be displayed
	
	if (Obj(elemLevel2).style.display =='none')
	{
		Obj(elemLevel2).style.display='';
		elemSrc.src = "images/arrow_up.gif";
		refreshImageView(elemSrc);
		openLinksGroup('imgShowReports',true);
	}
	else
	{
		Obj(elemLevel2).style.display='none';
		elemSrc.src = "images/arrow_down.gif";
		refreshImageView(elemSrc);		
		openLinksGroup('imgShowReports',false);
	}
}

function displayAdminTasks(Event)
{
	var elemSrc = Obj('imgShowAdminTasks');//Image-Button
	var elemLevel2 = "div_admin_tasks";//elemSrc.getAttribute("level2ID"); //Element to be displayed
	
	if (Obj(elemLevel2).style.display =='none')
	{
		Obj(elemLevel2).style.display='';
		elemSrc.src = "images/arrow_up.gif";
		refreshImageView(elemSrc);
		openLinksGroup('imgShowAdminTasks',true);
	}
	else
	{
		Obj(elemLevel2).style.display='none';
		elemSrc.src = "images/arrow_down.gif";
		openLinksGroup('imgShowAdminTasks',false);
		refreshImageView(elemSrc);
	}
}
function openViewerLogin(user_id)
{
	Obj("main_frame_user_id").value=user_id;
	Obj("main_frame_user_plattform").value=3;
	Obj("main_frame_user_logged").value="true";
	openMainFrame();
	
	
	
}
function openLogin(user_id,Event)
{
	Obj("user_id").value=user_id;
	Obj("user_id2").value=user_id;
	//Für viewer direkt umleiten
	/*if (viewerLogin)
	{
		
		//document.location.href="../view.aspx?user_id" + user_id;
		//document.write("<script language='JavaScript'>document.location.href='../view.aspx?user_id=" + user_id +"';</script>");
		//document.location.reload();
		Obj("main_frame_user_logged").value="true";
		Obj("main_frame_user_id").value = user_id;
		Obj("main_frame_user_plattform").value = 3;		
		openMainFrame();
		return;		
	
	}*/
	
	
	var div=Obj("login_div");
	//Positionieren
	div.style.position="absolute";	
	var left, top;
	if (navigator.appName=="Netscape")
	{
		left = Event.pageX+10;
		top = Event.pageY-50;	
				
		if (top < window.pageYOffset)
			top = window.pageYOffset-10;
		if (( top+100) >  ( window.pageYOffset + window.innerHeight ))
			top = window.pageYOffset + window.innerHeight-120;
		if (( left+170) >  ( window.pageXOffset + window.innerWidth ))
			left = window.pageXOffset + window.innerWidth-170;
		
			
	}
	else
	{
		left = Event.x + document.body.scrollLeft+10;
		top = Event.y + document.body.scrollTop-50;	

		if (top< (document.body.scrollTop))
			top = document.body.scrollTop+5;
		if (( top+100) >  ( document.body.scrollTop  + document.body.offsetHeight ))
			top = document.body.scrollTop + document.body.offsetHeight-100;
		if (( left+170) >  ( document.body.scrollLeft + document.body.offsetWidth))
			left = document.body.scrollLeft + document.body.offsetWidth-175;
	}
	div.style.left =left;
	div.style.top = top ;	
	div.style.visibility="visible";
	Obj("password").focus();
	
}

function editTable (table_id,db_id)
{
	Obj("hidden_action").value="list";
	Obj("hidden_table_id").value = table_id;
	if (!db_id)
		db_id = Obj("hidden_db_id").value;
	Obj("hidden_db_id").value = db_id;
	if (Obj("cms_form")==null)
		Obj("actions").submit();
	else
		Obj("cms_form").submit();
	
}
function editTable2 (table_id)
{
	var url ="cms.aspx?hidden_action=list&hidden_table_id" + table_id + 
		"&user_id=" + Obj("user_id").value + "&lang=" + Obj("lang").value;
	if (window.parent.parent.document.getElementById("contents")!=null)
	{
		window.parent.parent.document.getElementById("contents").src = url;
		window.parent.parent.editTable(table_id);
	}
}




function addRecord()
{
	
	Obj("action").value="new";
	//alert (Obj("action").value);
	//Obj("cms_form").submit();
}
function startStepByStepSelectionWizard (cms_field_id,Event,rowId,field_name, rel_id)
{
	if(!cms_field_id) return;
	if(rowId!=null && rowId!="")
		selectedRelField = rowId + "_" + field_name;
	else
		selectedRelField = field_name;
	Obj("temp_selected_field").value=selectedRelField;
	$(selectedRelField).setAttribute("field_name", field_name);

	var win = window.open("cms/step_selection.aspx?cms_field_id=" + cms_field_id,
		"StepByStepSelectionWizard",
		"width=600,height=600," + 
		"scrollbars=yes,resizable=yes");
	
	win.focus();
}
function applyStepByStepSelection(selectedOption)
{
	if(!selectedOption)return;
	var tempField = $("temp_selected_field");
	if(!tempField) return;
	var inputFieldName = tempField.value;
	if(!inputFieldName) return;
	var fieldName = $(selectedRelField).getAttribute("field_name");
	if (selectedOption==-1)
	{
		Obj(selectedRelField).value="";
		Obj("span_" + selectedRelField).innerHTML = "[ "+ GetString("NoSelection") + " ]";
		if(fieldName)
		{
			last_combo_selection_value[fieldName] = "";
			last_combo_selection_text[fieldName] = "[ "+ GetString("NoSelection") + " ]";
		}
	}
	else
	{
		Obj(selectedRelField).value=selectedOption.value;
		Obj("span_" + selectedRelField).innerHTML = selectedOption.text;
		if(fieldName)
		{
			last_combo_selection_value[fieldName] = selectedOption.value;
			last_combo_selection_text[fieldName] = selectedOption.text;
		}
	}
	
	
	
}

function applyDocumentSelection (selectedDocuments)
{

	//(link,field_name,idx)
	var field_name = "doc_guid";
	
	if (isNull(selectedDocuments) || selectedDocuments.length == 0)
	{
		Obj (selectedRelField).value="";
		Obj("span_" + selectedRelField).innerHTML = "[ " + GetString ("NoSelection") + " ]";
	}
	else
	{
		Obj(selectedRelField).value=selectedDocuments[0][0];
		last_combo_selection_value[field_name] =selectedDocuments[0][0];
		last_combo_selection_text[field_name] = selectedDocuments[0][1];
		Obj("span_" + selectedRelField).innerHTML = selectedDocuments[0][1];
	}
	
	
	
	
}
function applySelectedDocumentCategories (selectedCategories)
{

	//(link,field_name,idx)
	var field_name = (selectedRelField && selectedRelField.toUpperCase ().endsWith ("QMS_DOCUMENT_VERSIONS_2_CATEGORY") ? "QMS_DOCUMENT_VERSIONS_2_CATEGORY": "doc_category_guid");
	
	if ( isNull(selectedCategories) || selectedCategories.length == 0)
	{
		Obj (selectedRelField).value="";
		Obj("span_" + selectedRelField).innerHTML = "[ " + GetString ("NoSelection") + " ]";
	}
	else
	{
		if (field_name == "QMS_DOCUMENT_VERSIONS_2_CATEGORY")
		{
			var i,resText, resValue;
			resValue="";
			resText ="";
			if (!isNull (selectedCategories))
				for (i=0;i<selectedCategories.length;i++)
				{
					resValue+=selectedCategories[i][0]+",";
					resText+= "&rarr; " + selectedCategories[i][1] + "<br>";
				
				}
			resValue= resValue.substr(0,resValue.length-1);
			resText= resText.substr(0,resText.length-4);
			if(resText=="")
				resText = "[ " + GetString("NoSelection") + " ]";
			Obj(selectedRelField).value=resValue;	
			Obj("span_" + selectedRelField).innerHTML = resText;
			last_combo_selection_value[field_name] =resValue;
			last_combo_selection_text[field_name] =resText;
			
			//Resize the items div
			var wrappingDiv = Obj("span_" + selectedRelField).parentElement;
			if(wrappingDiv !=null )
				wrappingDiv = wrappingDiv.parentElement;
			if(wrappingDiv !=null)
			{
				wrappingDiv.style.overflow="visible";
				var height = wrappingDiv.scrollHeight;
				if(height>200) height = 200;
					wrappingDiv.style.height = height +"px";
				wrappingDiv.style.overflow="auto";
			}
		}
		else
		{
			Obj(selectedRelField).value = selectedCategories[0][0];
			last_combo_selection_value[field_name] =selectedCategories[0][0];
			last_combo_selection_text[field_name] = selectedCategories[0][1];
			Obj("span_" + selectedRelField).innerHTML = selectedCategories[0][1];
		}
	}
}

var selectedRelField=null;
var lastDivDisplayed=null;

function showRelatedDiv(Event,rowId,field_name, rel_id)
{
	
	if(rowId!=null && rowId!="")
		selectedRelField = rowId + "_" + field_name;
	else
		selectedRelField = field_name;
	
	Obj("temp_selected_field").value=selectedRelField;
	var div;
	if (rel_id=="-1")
		div = Obj("div_" + field_name);
	else
		div = Obj("div_" + field_name + rel_id);
	lastDivDisplayed=div;
	
	
	
	
	//Extra handling for some tables/fields
	var isDocumentSelection = false;
	var isDocumentCategorySelection = false;
	if (window.currentCmsTableInfo)
	{
		isDocumentSelection			= window.currentCmsTableInfo.Name.toUpperCase () == "KTQ_DOCUMENT_VERSIONS" && field_name.toUpperCase () == "DOC_GUID";
		isDocumentCategorySelection	= (window.currentCmsTableInfo.Name.toUpperCase () == "KTQ_DOCUMENT_VERSIONS" && field_name.toUpperCase () == "DOCUMENT_CATEGORY_GUID")
			|| (window.currentCmsTableInfo.Name.toUpperCase () == "KTQ_DOCUMENT_CATEGORIES" && field_name.toUpperCase () == "PARENT_CATEGORY_GUID") 
			|| (window.currentCmsTableInfo.Name.toUpperCase () == "KTQ_DOCUMENT_VERSIONS" && field_name.toUpperCase () == "QMS_DOCUMENT_VERSIONS_2_CATEGORY");
	}
	
	if (isDocumentSelection
		|| isDocumentCategorySelection
		)
	{
	
		//Currently selected item guid 
		var selectedItemGuid = null;
		var selectedItemTitle = null;
		
		var hiddenInputField = $(selectedRelField);
		
		if (hiddenInputField)
			selectedItemGuid  = hiddenInputField.value;
		var spanDocumentTitle = $("span_" + selectedRelField);
		if (spanDocumentTitle)
			selectedItemTitle = spanDocumentTitle.innerHTML;
		
		var win;
		if (isDocumentSelection)
			win = window.open (getVirtualPath() + "wizards/documentsSelection/selector.aspx",
			"DocumentSelector", "width=900,height=600,resizable=yes,scrollbars=yes");
		else if (isDocumentCategorySelection)
			win = window.open (getVirtualPath() + "wizards/documentCategorySelection/selector.aspx" + (field_name.toUpperCase () == "QMS_DOCUMENT_VERSIONS_2_CATEGORY" ? "?multipleSelectionMode=true":""),
			"DocumentSelector", "width=900,height=600,resizable=yes,scrollbars=yes");			
		
		if (win)
			if (!win.callBackExternalWaitingClient)
				win.callBackExternalWaitingClient = 
			//addEvent (win, "onload", 
			function (e)
				{	
				
					//Preselect documents 
					if (win.preselectItems)
					{
						//"Weitere Kategorien" of Document versions 
						if (field_name.toUpperCase () == "QMS_DOCUMENT_VERSIONS_2_CATEGORY")
						{
							//Utility 
							var arrowContainer = document.createElement ("SPAN");
							arrowContainer.innerHTML = "&rarr;";
							var removeArrowRegEx = new RegExp(arrowContainer.innerText, "gi");
	
							//Titles 
							var arrGuids = String (hiddenInputField.value).split (",");
							var arrTitles = String (spanDocumentTitle.innerText).replace (removeArrowRegEx, "").replace (/\r/ig,"").split ("\n");
							var args= new Array ();
							for (var i=0; i < arrGuids.length; i++)
							{
								args.push ([arrGuids[i],(arrTitles!=null && i<=(arrTitles.length-1) ? arrTitles [i] : " ")]);
							}
							
							win.preselectItems (args);
						}
						else
							win.preselectItems ([[selectedItemGuid, selectedItemTitle]]);
					}
				};
				//);
		return;
	}	
	
	div.style.visibility = "hidden";
	div.style.display = "";
	
	var divHeight = div.offsetHeight;// getCurrentStyleValue(div.className,"height","cms.css");
	if(divHeight==null) divHeight = getCurrentStyleValue("div." + div.className,"height","cms.css");
	var divWidth = div.offseetWidth;// getCurrentStyleValue(div.className,"width","cms.css");
	if(divWidth==null) divWidth = getCurrentStyleValue("div." + div.className,"width","cms.css");
	divWidth = parseInt(divWidth);
	divHeight = parseInt(divHeight);
	if(divWidth==null || isNaN(divWidth)) divWidth=351;
	if(divHeight==null ||  isNaN(divHeight)) divHeight=200;
	
	//Positionieren
	var left, top;
	var offsetLeft = 0;
	var offsetTop = -50;
	if (isNS() )
	{
		
		offsetLeft = - (divWidth/2);			
		left = Event.pageX+offsetLeft;
		top = Event.pageY+offsetTop;
		
		
		//Wenn Top > Fensterhöhe
		if ( (top + divHeight) > ( window.pageYOffset + window.innerHeight ))
			top = window.pageYOffset + window.innerHeight - divHeight;
		//Wenn  Top < 0 
		if (top < window.pageYOffset)
			top = window.pageYOffset-10;

		//Wenn Left+Width > Fensterbreite
		if ( (left+divWidth) > ( window.pageXOffset + window.innerWidth ) )
			left = window.pageXOffset + window.innerWidth - divWidth;
		//Wenn Lef < 0
		if ( left < window.pageXOffset )
			left = window.pageXOffset+10;
			
	}
	else
	{
		var inner_div = Obj("cms_inner_table");
		offsetLeft = -75;//-(divWidth/2);
		offsetTop = -50; 
		
		var pos = getPopupPosition(Event, divHeight, divWidth, offsetLeft, offsetTop, inner_div);	
		left = pos.left; //Event.x + scrollLeft+ offsetLeft;
		top = pos.top; //Event.y + scrollTop+ offsetTop;	
		/*left-=20;
		top -=50;	
		
		//Wenn Top > Fensterhöhe
		if ( (top + divHeight) > ( document.body.offsetHeight + scrollTop) )
			top = Event.y + scrollTop - divHeight;
		//Wenn  Top < 0 
		if (top < scrollTop)
			top = Event.y + scrollTop;
		//Wenn Left+Width > Fensterbreite
		if ( (left+divWidth) > ( document.body.offsetWidth + scrollLeft) )
			left = Event.x + scrollLeft - divWidth;
		//Wenn Lef < 0
		if ( left < scrollLeft )
			left = Event.x + scrollLeft;
			*/
		
	}
	
	div.style.left =left;
	div.style.top = top;
	//div.style.zIndex = 1099;
	div.style.visibility = "visible";
	div.focus();
	var iframe = document.getElementById("bg_iframe_" + field_name);
	if(iframe==null) iframe = document.getElementById("bg_iframe_" + field_name + rel_id);
	if(iframe!=null)
	{
		
		iframe.style.display="";
		iframe.style.left =left;
		iframe.style.top = top;
		iframe.style.width = divWidth;
		iframe.style.height = divHeight;
		
		
	}
	//Create a iframe to overwrite select boxes 
	/*var iframe = Obj("popupBgWindow");
	if(iframe==null)
	{
		iframe = document.createElement("IFRAME");
		document.body.appendChild(iframe);
	}
	

	iframe.width = divWidth;
	iframe.height = divHeight;
	iframe.frameBorder =0;
	iframe.style.position = "absolute";
	iframe.style.left = left;
	iframe.style.top = top+50;
	iframe.style.display = "block";
	iframe.style.visibility = "visible";
	iframe.style.border = "10px solid red";
	iframe.style.filter = "Alpha(opacity:100)";
	iframe.style.zIndex = 899;
	iframe.id = "popupBgWindow";
	//iframe.contentWindow.document.body.innerHTML = div.innerHTML;*/
	
	
	//Hide the listboxes of the html editor
	/*if(Obj("font_size")) Obj("font_size").style.visibility = "hidden"; 
	if(Obj("fonts_list")) Obj("fonts_list").style.visibility = "hidden"; //display = "none";
	if(Obj("formatblock")) Obj("formatblock").style.visibility = "hidden"; */
	
	
}
function hideRelatedDiv(div_name)
{
	Obj(div_name).style.display = "none";
	var iframe = document.getElementById(div_name.replace("div_","bg_iframe_"));
	if(iframe!=null)
		iframe.style.display = "none";
	//Display the listboxes of the html editor
	/*if(Obj("font_size")) Obj("font_size").style.visibility = "visible"; 
	if(Obj("fonts_list")) Obj("fonts_list").style.visibility = "visible"; 
	if(Obj("formatblock")) Obj("formatblock").style.visibility = "visible"; */
}

function windowReSize()
{
	if (document.getElementById("hidden_window_size").value=="full") //Minimize
	{
		
		window.status = "Minimize";
		document.location.href="executor.aspx?hidden_table_id=" + Obj("hidden_table_id").value + "&hidden_db_id=" + Obj("hidden_db_id").value;
		
		
	/*
		document.getElementById("hidden_action").value="list";
		document.getElementById("hidden_window_size").value="normal";
		document.getElementById("actions").action="executor.aspx";		
		document.getElementById("actions").target = "_self";
		document.getElementById("actions").submit();
		*/	
	}
	else // Maximize
	{
		
		document.getElementById("hidden_action").value="list";
		document.getElementById("hidden_window_size").value="full";
		document.getElementById("actions").action="cms.aspx";		
		document.getElementById("actions").target = "_parent";
		document.getElementById("actions").submit();
	}
	
	//document.parentWindow.frameElement.width=screen.width;
	//document.parentWindow.frameElement.height=screen.height;
}

function actionShortCut(Event)
{
	
	if (Event.keyCode==13)
	{	
		enterPressed=true;
		window.setTimeout("enterPressed=false",500);
		return false;
	}
	try
		{
		//Shift+Strg+A - Select All
		if ( (Event.shiftKey && Event.ctrlKey && Event.keyCode==1)) // || (Event.shiftKey && Event.keyCode==97) )
		{
			selectAllRecords();
			
		}
		//Shift+Strg+S - Speichern
		if ( (Event.shiftKey && Event.ctrlKey && Event.keyCode==19)) // || (Event.shiftKey && Event.keyCode==97) )
		{
			if (document.getElementById("aspBtnSave").style.display!='none')
				document.getElementById("aspBtnSave").click();					
		}
		//Shift+Strg+B - Bearbeiten
		if ( (Event.shiftKey && Event.ctrlKey && Event.keyCode==2)) // || (Event.shiftKey && Event.keyCode==97) )
		{
			if (document.getElementById("aspBtnEdit").style.display!='none')
				document.getElementById("aspBtnEdit").click();					
		}
		//Shift+Strg+D - Löschen
		/*
		if ( (Event.shiftKey && Event.ctrlKey && Event.keyCode==4)) // || (Event.shiftKey && Event.keyCode==97) )
		{
			if (document.getElementById("aspBtnDelete").style.display!='none')
				document.getElementById("aspBtnDelete").click();					
		}*/
		//Shift+Strg+N - Neu hinzufügen
		if ( (Event.shiftKey && Event.ctrlKey && Event.keyCode==14)) // || (Event.shiftKey && Event.keyCode==97) )
		{
			if (document.getElementById("aspBtnAddNew").style.display!='none')
				document.getElementById("aspBtnAddNew").click();					
		}
		//Shift+Strg+L - Auflistung
		if ( (Event.shiftKey && Event.ctrlKey && Event.keyCode==12)) // || (Event.shiftKey && Event.keyCode==97) )
		{
			if (document.getElementById("aspBtnList").style.display!='none')
				document.getElementById("aspBtnList").click();					
		}
		
		//Shift+Strg+M - Fenster maximieren/verkleinern
		if ( (Event.shiftKey && Event.ctrlKey && Event.keyCode==13)) // || (Event.shiftKey && Event.keyCode==97) )
		{
			document.getElementById("aResize").click();					
		}
		
		//Shift+Strg+T - Tabellen anzeigen
		if ( (Event.shiftKey && Event.ctrlKey && Event.keyCode==20)) 
		{
			document.getElementById("imgCMSTables").click();					
		}
		
		//Shift+Strg+F - Tabelle durchsuchen
		if ( (Event.shiftKey && Event.ctrlKey && Event.keyCode==6)) 
		{
			document.getElementById("btn_show_search_form").click();					
		}
		
		//Shift+Strg+V - Ansicht wechseln		
		if ( (window.event.shiftKey && window.event.ctrlKey && window.event.keyCode==22)) 
		{
			if (document.getElementById("aspImageViewMode").style.display!='none')
				document.getElementById("aspButtonChangeViewMode").click();					
		}
		
	
	}catch (err)
	{
		window.status="Error: " +err.message;
	}
		
}

function showShortCuts()
{
	if (Obj("div_shortcuts").style.visibility=="hidden")
		Obj("div_shortcuts").style.visibility="visible";
	else
		Obj("div_shortcuts").style.visibility="hidden";
}

function saveSelectedIds()
{
		
		var selection="";
		
		try		
		{
			//If editing, don't overwrite ids			
			if (document.getElementById("hidden_action").value!="edit" && document.getElementById("hidden_action").value!="add_new" )	
			{			
				/*var tableContents = document.getElementById("aspTableTableContents");
				for (var i=1; i < tableContents.rows.length; i++)
				{
					var tRow = tableContents.rows[i];
					var row_number=tRow.id.substring(4);				
					if (tRow.cells[1].style.backgroundColor=="#778899") 
					{
						selection += row_number+",";
					}
				}
				if (selection!=null && selection.length>0)
					selection = selection.substr(0,selection.length-1);*/
				//remove repeated 
				
				document.getElementById("hidden_selected_id").value=selected_cms_rows;					
			}
		}catch (err) 
		{ 
			windows.status = "Error: " + err.message;
		}
		
    }

function confirmDeletionOfAllRecords ()
{
	if( !confirm(GetString("DoYouWantToDeleteAll"))) return false;
	if( !confirm(GetString("DoYouWantToDeleteAll2"))) return false;
	if( !confirm(GetString("DoYouWantToDeleteAll3"))) return false;
	return true;
}
function setAction(action)
{
	if(action=="save_as_new")
	{
		if(!confirm(GetString("ConfirmSavingAsNew"))) return false;
		Obj("new_record").value="true";
		action="save";
	}	
	if (action == "new")
		if (Obj("hidden_selected_id")!=null)
			Obj("hidden_selected_id").value="";
	document.getElementById("hidden_action").value=action;		
	//Check if several rows are selected for editing
	if(action == "edit" && showColumnsSelectionIsSet())
	{
		
		if(selected_cms_rows!=null && selected_cms_rows.indexOf (",")>0)
		{
			Obj("tblColumnsSelection").style.display="";
			actionSet= true;
			return false;
		}		
	}	
	actionSet= true;
	
	return true;
}
function showColumnsSelectionIsSet()
{
	return getCookie("qm_portal_show_columns_selection")!="false";
}
function showColumnSelectionDialogue(chk)
{
	var val = (chk.checked?"false":"true");
	setCookie ( "qm_portal_show_columns_selection", val, new Date(2100,1,1)); 
}
function checkObligatoryFields()
{
	var fields = Obj("hidden_obligatory_fields").value;
	
	if (fields!=null && fields.length>0)
	{
		var fieldsArr = fields.split(",");
		
		for (var i=0;i<fieldsArr.length;i++)
		{
			var inputField = Obj(fieldsArr[i]);
			
			var inputUploadField = Obj(fieldsArr[i] + "_upload");
			
			var valueExists = (inputUploadField !=null ? !isEmpty (inputUploadField.value) : false);
			if (!valueExists)
				valueExists = (inputField !=null ? !isEmpty (inputField.value) : false);
				
			var checkFailed = !valueExists;
			//(inputUploadField==null  && inputField !=null && inputField.value=="") ||(inputUploadField!=null && inputUploadField.value=="");
			if (checkFailed)
			{
				var fieldName =  (Obj(fieldsArr[i])!=null ? Obj(fieldsArr[i]).getAttribute("level2Id") : null);
				
				if(fieldName!=null && fieldName!="")
				{
					alert (GetString("PleaseFillFirstFieldX").replace("{0}",fieldName));
					//Try to set the focus!
					try
					{
						Obj(fieldsArr[i]).focus();
					}catch (err) {}
				}
				else 
				{
					return true;
					//alert (GetString("PleaseFillAllObligatoryFields") );
				}
				return false;
			}
		}
	}
	
	obligatoryFieldsChecked=true;	
	return true;
	
}

/* CMS Preview Image */
var preview_image_window_maximized=false;
var preview_image_last_pos_left="0",preview_image_last_pos_top="0";
var preview_image_last_pos_width="400px",preview_image_last_pos_height="250px";
function showCmsPreviewImage (img_url,Event)
{

	var div = Obj("cms_preview_image_div");
	var preview_img = Obj("cms_preview_image");	
	if (div==null) return;
	if (preview_img==null) return;
	
	if(Event==null) //Fenster maximieren
	{
		var maxBtn = Obj ("cms_preview_maximize_button");
		if (!preview_image_window_maximized)
		{
			
			preview_image_window_maximized=true;
			if (maxBtn!=null)
			{
				maxBtn.src="images/window_normalsize.gif";
				maxBtn.title="Vorschaufenster wieder verkleinern";
			}
			preview_image_last_pos_left = div.style.left;
			preview_image_last_pos_top = div.style.top;	
			preview_image_last_pos_width = div.style.width;
			preview_image_last_pos_height = div.style.top;			
			div.style.left="0";
			div.style.top="0";
			div.style.width=screen.availWidth;
			div.style.height=screen.availHeight;
		}
		else
		{
			preview_image_window_maximized=false;
			if (maxBtn!=null)
			{
				maxBtn.src="images/window_fullsize.gif";
				maxBtn.title="Vorschaufenster maximieren";
			}
			div.style.left=preview_image_last_pos_left;
			div.style.top=preview_image_last_pos_top;
			div.style.width=preview_image_last_pos_width;
			div.style.height=preview_image_last_pos_height;
		}
		return;
	}
	var left,top;
	if (img_url!=null)
	{
		div.style.display="";
		
		preview_img.src = img_url;					
		if (navigator.appName=="Netscape")
		{
			left = Event.pageX;
			top = Event.pageY;	
		}
		else
		{
			left = Event.x + document.body.scrollLeft;
			top=Event.y + document.body.scrollTop;
		}
		div.style.left=String(left-200) + "px";
		div.style.top =String(top+15) + "px";
	}
	else
		div.style.display="none";
}

/* Multiple selection */
function addSorted(select, text, value)
{
//Die Sortierreihenfolge einhalten
			var tt;
			var option;
			var optionText;
			for ( tt=0; tt<select.length;tt++)
			{
				option = select.options[tt];				
				if (option!=null)
				{
					optionText = option.text;					
					if ( optionText !=null && optionText.length>0)
					{
						if (text <= optionText)
							{ break;}
					}
				}
			}
			if(isMS())
				select.add (new Option(text, value),tt);
			else
				select.add (new Option(text, value),null);
			
}
function addToRelatedList(link,field_name,idx)
{
	
	if (idx==-1)
		Obj(selectedRelField).value="";
	else
	{
		Obj(selectedRelField).value=idx;
		last_combo_selection_value[field_name] =idx;
		last_combo_selection_text[field_name] =link.innerHTML;
	}
	Obj("span_" + selectedRelField).innerHTML = link.innerHTML;
	
	hideRelatedDiv("div_" + field_name);
	
}

function addToRelatedListMultiple2(field_name, row_guid)
{
	
	try
	{
		var selectSelected = document.getElementById("multiple_selected_items_" + field_name + row_guid);
		var i,resText, resValue;
		resValue="";
		resText ="";
		for (i=0;i<selectSelected.length;i++)
		{
			if (selectSelected.options[i].text !=null)				
			{
				resValue+=selectSelected.options[i].value+",";
				resText+= "&rarr; " + selectSelected.options[i].text + "<br>";
			}
		}
		resValue= resValue.substr(0,resValue.length-1);
		resText= resText.substr(0,resText.length-4);
		if(resText=="")
			resText = "[ " + GetString("NoSelection") + " ]";
		Obj(selectedRelField).value=resValue;	
		Obj("span_" + selectedRelField).innerHTML = resText;
		last_combo_selection_value[field_name] =resValue;
		last_combo_selection_text[field_name] =resText;
		
		//undisplayObj(Obj("div_" + field_name));
		hideRelatedDiv("div_" + field_name+ row_guid);
	
		//Resize the items div
		var wrappingDiv = Obj("span_" + selectedRelField).parentElement;
		if(wrappingDiv !=null )
			wrappingDiv = wrappingDiv.parentElement;
		if(wrappingDiv !=null)
		{
			wrappingDiv.style.overflow="visible";
			var height = wrappingDiv.scrollHeight;
			if(height>200) height = 200;
				wrappingDiv.style.height = height +"px";
			wrappingDiv.style.overflow="auto";
		}
		
	}catch (err) { window.status="Error: " + err.message;}
}
	function addAllItems (field_name)	
	{
		var selectAvailable = document.getElementById("multiple_available_items_" +field_name);
		var selectSelected = document.getElementById("multiple_selected_items_" +field_name);
		if (selectAvailable==null || selectSelected==null) return;
		
		var i;
		var itemCount1,itemCount2;
		itemCount2 =0;
		itemCount1 =selectAvailable.length ;
		for (i=itemCount1-1;i>=0;i--)
		{
			addSorted(selectSelected,selectAvailable.options[i].text,selectAvailable.options[i].value);
			selectAvailable.remove(i);			
		}
	}
	function addItem(field_name)
	{
		var selectAvailable = document.getElementById("multiple_available_items_" +field_name);
		var selectSelected = document.getElementById("multiple_selected_items_" +field_name);
		if (selectAvailable==null || selectSelected==null) return;
		
		var i;
		var itemCount1,itemCount2;
		itemCount2 =0;
		itemCount1 =selectAvailable.length ;
		for (i=itemCount1-1;i>=0;i--)
			if (selectAvailable.options[i].selected == true)				
			{
				//selectSelected.add (new Option(selectAvailable.options[i].text, selectAvailable.options[i].value),selectSelected.length);
				addSorted(selectSelected,selectAvailable.options[i].text,selectAvailable.options[i].value);
				selectAvailable.remove(i);
			}
		
		
		
	}
	function removeAllItems(field_name)
	{
		var selectAvailable = document.getElementById("multiple_available_items_" +field_name);
		var selectSelected = document.getElementById("multiple_selected_items_" +field_name);
		
		var i;
		var itemCount1,itemCount2;
		itemCount2 =0;
		itemCount1 =selectSelected.length ;
		
		for (i=itemCount1-1;i>=0;i--)
		{
			addSorted(selectAvailable,selectSelected.options[i].text,selectSelected.options[i].value);
			selectSelected.remove(i);
		}
	}
	function removeItem(field_name)
	{
		var selectAvailable = document.getElementById("multiple_available_items_" +field_name);
		var selectSelected = document.getElementById("multiple_selected_items_" +field_name);
		
		var i;
		var itemCount1,itemCount2;
		itemCount2 =0;
		itemCount1 =selectSelected.length ;
		
		for (i=itemCount1-1;i>=0;i--)
			if (selectSelected.options[i].selected == true)				
			{
				//document.getElementById("multiple_available_items").add (new Option(document.getElementById("multiple_selected_items").options[i].text, document.getElementById("multiple_selected_items").options[i].value),document.getElementById("multiple_available_items").length);
				addSorted(selectAvailable,selectSelected.options[i].text,selectSelected.options[i].value);
				selectSelected.remove(i);
			}
	}
	
function checkEvent ()
{
	if (!enterPressed)return true;
	if (Obj("aspBtnSave").style.display!="none")
			Obj("aspBtnSave").click();
	return false;		
}
function selectAllRecords(Event)
{
	selectionModeAll=true;
	selectionModeAllSelect=!selectionModeAllSelect;
	if (selectionModeAllSelect)
		Obj("select_all_records").checked=true;
	else
		Obj("select_all_records").checked=false;
	var table =document.getElementById("aspTableTableContents");		
	for (var i=1; i<table.rows.length;i++)
	{
		onClickCMSRow(Event,table.rows[i]);
			
	}			
	selectionModeAll=false;	
}

//Vorschau der Textarea-Elemente mit html-tags
var previewObject=null;
function showCmsPreview(tarea)
{
	return;
	previewObject=tarea; 
	writeCmsPreviewDiv(tarea,window.event);
	document.getElementById("preview_div").style.display="";			
	document.getElementById("preview_text").innerHTML= tarea.value;
}
function hideCmsPreview(tarea)
{
	return;
	if (Obj("preview_div")!=null)
		undisplayObj(Obj("preview_div"));
	tarea.parentElement.style.position="static";
	
}
function updateCmsPreview(tarea)
{
	showCmsPreview(tarea);
}

function writeCmsPreviewDiv(tarea,Event)
{
	
	try
	{
		var preview_div, divInnerHtml;
			
		if (document.getElementById ("preview_div")==null)	
		{	
			divInnerHtml="<table class='cms_preview' border=1 cellpadding=0 cellspacing=0>" +
					"<tr><th class='cms_preview'>HTML-Vorschau</th></tr>" +
					"<tr><td class='cms_preview' id='preview_text'></td></tr>" +
				"</table>";
			preview_div = document.createElement("div");		
			preview_div.id = "preview_div";		
			preview_div.style.display="none";
			preview_div.style.position="absolute";		
			//preview_div.style.width="120px";		
			preview_div.style.left="0px";
			preview_div.style.top="0px";
			preview_div.innerHTML = divInnerHtml;
			tarea.parentElement.style.position="relative";
			tarea.parentElement.appendChild(preview_div);
			
			//document.body
		}	
		else
			preview_div = document.getElementById ("preview_div");
		
		preview_div.style.display="";
			
		var left, top;
		//Positionierung
		if (navigator.appName=="Netscape")
		{
			left = Event.pageX;
			top = Event.pageY;	
		}
		else
		{
			left=tarea.offsetLeft + tarea.offsetWidth;//currentStyle.left;
			//left = Event.x + document.body.scrollLeft;
			top=tarea.offsetTop;Event.y ;//+ document.body.scrollTop;	
			
			/*if ((left+160) >  ( document.body.scrollLeft + document.body.offsetWidth))
			{
				left = left-140;//document.body.scrollLeft + document.body.offsetWidth-175;
				dirLeft=true;
			}*/
			/*
			if (top < (document.body.scrollTop))
				top = document.body.scrollTop+5;
			if (( top+100) >  ( document.body.scrollTop  + document.body.offsetHeight ))
				top = document.body.scrollTop + document.body.offsetHeight-100;
			if (( left+170) >  ( document.body.scrollLeft + document.body.offsetWidth))
				left = document.body.scrollLeft + document.body.offsetWidth-175;
			*/
			
		}		
		preview_div.style.left =left;
		preview_div.style.top = top ;
	}catch (err)
	{
		window.status = "Error: " + err.message;
	}
}

var record_has_been_changed=false;
function recordChanged(evt)
{
	record_has_been_changed=true;
	
	if(window.RecordChangedCallBack)
		window.RecordChangedCallBack(evt);
	else
		window.status=GetString("Please save the changes!");
	if (Obj("answer_state")!=null)
	{
		//Obj("answer_state").selectedIndex=2;
		//Obj('span_question').style.color='green'
	}
	if(document.all) if(event==null || event.type!="change") return;	
	else if(evt==null || evt.type!="change") return;
	var input;
	if(document.all) input = event.srcElement;
	else input = evt.target;
	//debugger;
	
	if(input==null) return;
	var inputTag = input.tagName!=null?input.tagName.toLowerCase():null;
	var inputType = input.type!=null?input.type.toLowerCase():null;
	//alert(inputTag + "," + inputType);
	if( 
		(inputTag=="input" && inputType=="text") ||
		(inputTag=="textarea")
		)
	{
		var td = input.parentNode; if(td.tagName==null || td.tagName.toLowerCase()!="td") return;
		var tr = td.parentNode;
		var table = tr.parentNode; if(table.tagName!=null && table.tagName.toLowerCase()=="tbody") table = table.parentNode;
		if(table.tagName==null || table.tagName.toLowerCase()!="table") return;
		tr = table.rows[0];
		var headerCell = getCellByCellIndex(tr,td.cellIndex);
		var field_name = headerCell.getAttribute("column_name");
		if(field_name==null) return;
		//Save the last value for reusing later on
		last_combo_selection_value[field_name] = input.value;
		last_combo_selection_text[field_name] =input.value;		
		
	}
	
}
function checkIfRecordChanged()
{
	if (record_has_been_changed)
	{
		var res=confirm(GetString("AreYouSureToProceedWithoutSaving"));
		return res;
	}
	else
		return true;
}
/* USER ACCESS RIGHTS */
var ALLOW_ALL = 0;
var DENY_ALL = -1;
var ALLOW_SELECT = 1;
var ALLOW_INSERT = 2;
var ALLOW_UPDATE = 4;
var ALLOW_DELETE = 8;


/* CONTEXT MENU */
var cm=null;
function onContextMenu(cell,Event,area,field_name,field_data_type,field_value)
{	
	
	var row = cell.parentNode;
	
	unselectSelectedRows (null);
	
	//onClickCMSRow(row);
	selectCMSRow(row,false);
	
	//Menu items according to the access rights
	//Menu-Items "Record"
	var menuItemsCounter = 0;
	var menuItemsRecord = new Array ();
	//var access_right = Number(Obj("hidden_table_access_right").value);
	if (currentTablePermissionSet)
	{
		//Edit
		if (currentTablePermissionSet.Select && currentTablePermissionSet.Update)// ( (access_right==ALLOW_ALL) || ((access_right & ALLOW_UPDATE) == ALLOW_UPDATE)   )
			menuItemsRecord[menuItemsCounter++] = new ContextMenuItemClass("images/cm_edit_row.gif",		GetString("EditRecord"),	"cmEditRow(this);");
		//Delete
		if (currentTablePermissionSet.Select && currentTablePermissionSet.Delete)//( (access_right==ALLOW_ALL) || ((access_right & ALLOW_DELETE) == ALLOW_DELETE)   )
			menuItemsRecord[menuItemsCounter++]  = 	new ContextMenuItemClass("images/cm_delete_row.gif",	GetString("DeleteRecord"),	"cmDeleteRow(this);");
		//Copy
		if (currentTablePermissionSet.Insert)//( (access_right==ALLOW_ALL) || ((access_right & ALLOW_INSERT) == ALLOW_INSERT)   )
			menuItemsRecord[menuItemsCounter++]  = 	new ContextMenuItemClass("images/cm_copy_row.gif",		GetString("CopyRecord"),	"cmCopyRow(this);");
	}
	
	//Separator
	menuItemsRecord[menuItemsCounter++]  = 	new ContextMenuSeparator("gray",1);
	if (field_value!="NULL" && field_data_type!=FIELD_TYPE_TEXT)
	{
		//Filter 	
		menuItemsRecord[menuItemsCounter++] = new ContextMenuItemClass("images/cm_filter.gif",		GetString("IncludingFilter"),	"cmFilter('" + field_name + "',"+ field_data_type + 
			",'" + field_value + "', '=');");
		//Filter out
		menuItemsRecord[menuItemsCounter++] = new ContextMenuItemClass("images/pixel_transparent.gif",	GetString("ExcludingFilter"),	"cmFilter('" + field_name + "',"+ field_data_type + 
			",'" + field_value + "', '<>');");
	}
	//Filter none
	menuItemsRecord[menuItemsCounter++] = new ContextMenuItemClass("images/cm_filter_none.gif",		GetString("RemoveFilter"),	"cmFilterNone();");


	if (field_data_type!=FIELD_TYPE_TEXT)
	{
		//Separator
		menuItemsRecord[menuItemsCounter++]  = 	new ContextMenuSeparator("gray",1);
		//Sort asc
		menuItemsRecord[menuItemsCounter++] = new ContextMenuItemClass("images/cm_sort_asc.gif",		GetString("AscendingSorting"),	"sortTable('" + field_name + "','ASC');");
		//Sort desc
		menuItemsRecord[menuItemsCounter++] = new ContextMenuItemClass("images/cm_sort_desc.gif",		GetString("DescendingSorting"),	"sortTable('" + field_name + "','DESC');");
		//Sort userdefined
		menuItemsRecord[menuItemsCounter++] = new ContextMenuItemClass("images/cm_sort_user.gif",		GetString("UserDefinedSorting"),	"showUserDefinedSortParameters(event);");
		
	}

	if (cm!=null)
	{
		cm.Hide();		
	}
	cm = new ContextMenuClass (area,menuItemsRecord,GetString("Options"), contextMenuStyles,220);
	//else
	//	cm.items = menuItemsRecord;
	cm.Show(Event);
	lastContextMenu = cm;
	displayEditButtons("");
	return false;	
}
function onHeaderCellContextMenu(cell,Event)
{	
	
	//Menu-Items "Record"
	var menuItemsCounter = 0;
	var menuItemsRecord = new Array ();
	onmouseOutHeader(cell);
	//Hide
	menuItemsRecord[menuItemsCounter++] = new ContextMenuItemClass(null,		
		GetString("HideColumn"),	"cmHideCmsColumn(this,event);");
	
	//Restore all
	menuItemsRecord[menuItemsCounter++] = new ContextMenuItemClass(null,		
		GetString("RestoreHiddenCmsColumns"),	"cmRestoreHiddenCmsColumns(this,event);");
	
	if (cm!=null)
	{
		cm.Hide();		
	}
	cm = new ContextMenuClass ('record',menuItemsRecord,GetString("Options"), contextMenuStyles,250);
	cm.owner = cell;
	
	//else
	//	cm.items = menuItemsRecord;
	cm.Show(Event);
	lastContextMenu = cm;
	
	return false;	
}

var lastMouseOverRow =null;
function mouseEvent (row,highlight)
{
	
	if (lastMouseOverRow!=null)
		lastMouseOverRow.style.backgroundColor=cm.styles["table_background_color"];
	lastMouseOverRow = row;
	
	if (highlight)
		row.style.backgroundColor=cm.styles["highlight_color"];
	else
		row.style.backgroundColor=cm.styles["table_background_color"];
	
}

/* CMS ROWS EVENTS */
var lastRowClicked;
function onMouseOverCMSRow(Event,element)
{
	// Erst mal ausschalten
	var row_number=element.id.substring(4);
	/*if (element.cells[1].style.backgroundColor=="#778899") return;
	//if (element.id==lastRowClicked) return;
	element.style.color="black";
	hightLightCMSRow(element,"#cdcddd","dotted","white");		*/
	if(document.getElementById("margin_cell_"+ row_number)!=null)		
		document.getElementById("margin_cell_"+ row_number).innerHTML="<img style='height:10pt' width=7 border='0' src='images/arrow_right.gif'>";				
}
function onMouseOutCMSRow(Event,element)
{
	// Erst mal ausschalten
	var row_number=element.id.substring(4);
	/*if (element.cells[1].style.backgroundColor=="#778899") return;
	//if (element.id==lastRowClicked) return;
	element.style.color="black";		
	hightLightCMSRow(element,"white","dotted","black");*/
	if(document.getElementById("margin_cell_"+ row_number)!=null)		
		document.getElementById("margin_cell_"+ row_number).innerHTML="&nbsp;";
	
}

function hightLightCMSRow(tRow, bgColor, borderStyle,fgColor)
{
	
	for (var i=1; i<tRow.cells.length; i++)
	{	
		if(tRow.cells[i].className!=null && tRow.cells[i].className!="cms_cell_empty")
		{
			tRow.cells[i].style.backgroundColor=bgColor;
			tRow.cells[i].style.color=fgColor;
			tRow.cells[i].style.borderStyle=borderStyle;
			//tRow.cells[i].blur();
		}
	}
}
function selectCMSRow (tRow,diselect)
{
	if(tRow.id.indexOf("dependant_row_")==0) return;
	var row_number=tRow.id.substring(4);
	if (diselect)
	{
		selectionCount--;
		lastRowClicked=null;
		hightLightCMSRow(tRow,"white","solid","black");
		if(document.getElementById("margin_cell_"+ row_number)!=null)
			document.getElementById("margin_cell_"+ row_number).innerHTML="&nbsp;";		
		//Ids entfernen
		if (selected_cms_rows!="")
		{
			selected_cms_rows = selected_cms_rows.replace ("," + row_number ,"");
			selected_cms_rows = selected_cms_rows.replace (row_number +",","");
			selected_cms_rows = selected_cms_rows.replace (row_number,"");
		}			
	}
	else
	{
		selectionCount ++;
		lastRowClicked=tRow.id;
		hightLightCMSRow(tRow,"#778899","solid","white");				
		if(document.getElementById("margin_cell_"+ row_number)!=null)
			document.getElementById("margin_cell_"+ row_number).innerHTML="<img style='height:10pt' width=7 border='0' src='images/arrow_right.gif'>";	
		//Ids speichern
		if (selected_cms_rows!="")
			selected_cms_rows +=",";
		selected_cms_rows += row_number;			
	}
	if(isMS())
	{
		try{document.selection.clear();}catch (err){}
	}		
}

function unselectSelectedRows(except_row)
{
	if (selected_cms_rows!=null && selected_cms_rows!="")
	{
		var selected_cms_rows_ids = selected_cms_rows.split(",");
		var r;
		for (var i=0;i<selected_cms_rows_ids.length;i++)
		{
			if (selected_cms_rows_ids[i] == except_row) continue;
			r = Obj ("row_" +selected_cms_rows_ids[i]);
			
			if (r!=null)
			{
				selectCMSRow(r,true);
				
			}
			
		}
	}
}

var selected_cms_rows = "";
var lastCmsRowClicked="";
var rowSelectionRangeFrom = -1;
function onClickCMSRow(EVENT,element)
{
	if(element.id.indexOf("dependant_row_")==0) return;	
	//var access_right = Number(Obj("hidden_table_access_right").value);
	
	
	if (currentTablePermissionSet && 
		(currentTablePermissionSet.Insert || (currentTablePermissionSet.Select && currentTablePermissionSet.Update))
	)
	 //( ( (access_right==ALLOW_ALL) || ( ((access_right & ALLOW_INSERT) == ALLOW_INSERT)  || ((access_right & ALLOW_UPDATE) == ALLOW_UPDATE)  || ((access_right & ALLOW_UPDATE) == ALLOW_UPDATE) ) )
	{
		var multipleSelection=false;
		
		if(EVENT!=null && EVENT.ctrlKey)
			multipleSelection = EVENT.ctrlKey;
		
			
		var row_number=element.id.substring(4);			
		if(lastCmsRowClicked==row_number && !multipleSelection) 
		{
				return;
		}
		
		
		lastCmsRowClicked = row_number;
		//Unselect first all rows	
		if(!multipleSelection & !selectionModeAll)
		{
			/*var table =document.getElementById("aspTableTableContents");		
			for (var i=1; i<table.rows.length;i++)
			{
				if (element.id!=table.rows[i].id)
					selectCMSRow(table.rows[i],true);
			}
			*/
			
			unselectSelectedRows(row_number);
			selectionCount=0;
		}
		
		if (selectionModeAll)
		{
			if (selectionModeAllSelect)
				selectCMSRow(element,false);
			else
				selectCMSRow(element,true);			
		}
		else
		{
			if(EVENT!=null && EVENT.shiftKey)
			{
				if(rowSelectionRangeFrom != -1 && rowSelectionRangeFrom!=element.rowIndex)
				{
					var table = element.parentNode;
					if(table.tagName!=null && table.tagName.toLowerCase()=="tbody")
						table = table.parentNode;
					if(table.tagName!=null && table.tagName.toLowerCase()=="table")
					{
						var startI, endI;
						if(rowSelectionRangeFrom < element.rowIndex)
						{
							startI = rowSelectionRangeFrom ;
							endI = element.rowIndex;							
						}
						else
						{
							endI = rowSelectionRangeFrom ;
							startI= element.rowIndex;	
						}
						
						for(var i=startI;i <= endI; i++)
						{
							var row = table.rows[i];
							if(row.id!=null && row.id.indexOf("dependant_row_")==-1)
							{
								selectCMSRow(row,false);	
							}
						}
						
					}
				}
			}
			else
			{
				if (element.cells[1].style.backgroundColor=="#778899" || ( element.cells.length>2 && element.cells[2].style.backgroundColor=="#778899")) 
				//Diselect
				{
					selectCMSRow(element,true);	
				}
				//Select
				else	
				{
					selectCMSRow(element,false);							
				}
			}
		}
		rowSelectionRangeFrom = element.rowIndex;
		
		var displayMode="inline";
		if (selectionCount<=0)
			displayMode="none";			
		displayEditButtons(displayMode);
		
	}

}

function displayEditButtons (displayMode)
{
	//var access_right = Number(Obj("hidden_table_access_right").value);
	if(currentTablePermissionSet)
	{
		//Edit 
		if (currentTablePermissionSet.Select && currentTablePermissionSet.Update)// ( (access_right==ALLOW_ALL) || ((access_right & ALLOW_UPDATE) == ALLOW_UPDATE)   )
			document.getElementById("aspBtnEdit").style.display=displayMode;
		else
			document.getElementById("aspBtnEdit").style.display="none";
		
		//Delete 
		if (currentTablePermissionSet.Select && currentTablePermissionSet.Delete)//  ((access_right==ALLOW_ALL) || (access_right & ALLOW_DELETE) == ALLOW_DELETE)  
			document.getElementById("aspBtnDelete").style.display=displayMode;
		else
			document.getElementById("aspBtnDelete").style.display="none";
		
		//Add new 
		if (currentTablePermissionSet.Insert)//  ((access_right==ALLOW_ALL) || (access_right & ALLOW_INSERT) == ALLOW_INSERT)  
			document.getElementById("aspBtnCopy").style.display=displayMode;
		else
			document.getElementById("aspBtnCopy").style.display="none";
	}
}


function onDblClickCMSRow(Event,element)
{
	if (document.getElementById("aspBtnEdit").style.display!="none" 
	&& document.getElementById("aspBtnEdit").style.visibility!="hidden")
		document.getElementById("aspBtnEdit").click();
}
function cmRestoreHiddenCmsColumns(element,Event)
{
	var cookieHiddenCmsColumns= getCookie("CmsColumnsHiddenByUser");
	//debugger;
	if(cookieHiddenCmsColumns==null) return;
	var arr = cookieHiddenCmsColumns.split(",");
	var colAlreadySaved = false;
	if(cm!=null && cm.owner!=null)
		onmouseOutHeader(cm.owner);
	for(var i=arr.length-1;i>=0; i--)
	{
		var colName = arr[i];
		var headerCell = document.getElementsByName(String(colName));
		if(headerCell!=null) headerCell = headerCell [0];
		if(headerCell==null) continue;
		var cellIndex = headerCell.cellIndex;
		headerCell.style.display = "";
		var tr = headerCell.parentNode.nextSibling;
		//debugger;
		while (tr!=null)
		{
			var td = getCellByCellIndex(tr,cellIndex);
			if(td!=null) td.style.display = "";
			tr = tr.nextSibling;
		}
		arr.splice(i,1);
	}
	setCookie("CmsColumnsHiddenByUser",arr.join(","), new Date(2100,0,1));
}
function cmHideCmsColumn(element,Event)
{
	
	var cookieHiddenCmsColumns= getCookie("CmsColumnsHiddenByUser");
	if(cookieHiddenCmsColumns==null) cookieHiddenCmsColumns="";
	if(cm==null || cm.owner==null) return;
	var headerCell = cm.owner;
	
	var cellIndex = headerCell.cellIndex;
	headerCell.style.display = "none";
	var tr = headerCell.parentNode.nextSibling;
	//debugger;
	while (tr!=null)
	{
		var td = getCellByCellIndex(tr,cellIndex);
		if(td!=null) td.style.display = "none";
		tr = tr.nextSibling;
		
	}
	var colName = headerCell.getAttribute("table_name") + "." + headerCell.getAttribute("column_name");
	if(colName==null) return;
	//Store to cookie
	//Only if not editing
	var editingMode = $("editing_mode");
	//if(editingMode!=null  && editingMode.value=="multiple") return false;
	
	var arr = cookieHiddenCmsColumns.split(",");
	var colAlreadySaved = false;
	for(var i=0; i < arr.length; i++)
	{
		if(arr[i]==colName) 
		{
			colAlreadySaved = true;			
		}
	}
	if(!colAlreadySaved)
	{
		arr.push(colName);
	}
	setCookie("CmsColumnsHiddenByUser",arr.join(","), new Date(2100,0,1));
	
}

function cmEditRow()
{
	Obj("aspBtnEdit").click();
	
}
function cmDeleteRow()
{
	Obj("aspBtnDelete").click();
}
function cmCopyRow()
{
	Obj("aspBtnCopy").click();
}
/* Filter functions */
function cmFilter (field_name,fdt,field_value, filter_mode)
{	
	var filter_string = "";
	
	if (field_value=="")
	{
			if (filter_mode=="=")
				filter_string = field_name  + " IS NULL";
			else
				filter_string = field_name  + " IS NOT NULL";
	}
	else
		{	
		//Numbers & boolean
		if (fdt == FIELD_TYPE_TYNYINT ||  fdt == FIELD_TYPE_REFERENCE || fdt == FIELD_TYPE_INT  || fdt == FIELD_TYPE_M2N || fdt == FIELD_TYPE_RADIO_BUTTONS || fdt == FIELD_TYPE_INTERNAL_LISTBOX )
		{
			if(field_value.toString().indexOf("-")!=-1) //A GUID
				filter_string = field_name  + filter_mode + "'" + field_value + "'";
			else				
				filter_string = field_name  + filter_mode + field_value;
		}
		//Texts (No Memos!)
		else if (fdt == FIELD_TYPE_CHAR  ||fdt == FIELD_TYPE_DATETIME || fdt == FIELD_TYPE_VARCHAR || fdt == FIELD_TYPE_UPLOAD || fdt == FIELD_TYPE_SELF_REFERENCE )
		{
			filter_string = field_name  + filter_mode + "'" + field_value + "'";
		}
		//Boolean
		else if(fdt == FIELD_TYPE_BIT )
		{
			var val = "0";
			if(field_value == "True" || field_value == "true" )
				val = "1";
			filter_string = field_name + filter_mode + val;
		}
	}
	
	setAction("search");
	var search_filter_string = Obj("hidden_search_filter_string").value;
	if (search_filter_string!="")
		filter_string += " AND (" + search_filter_string + ") ";
	Obj("hidden_filter_string").value= filter_string;	
	Obj("actions").submit();
	
}
function cmFilterNone()
{
	resetSortNFilter();
	//Obj("hidden_search_filter_string").value="";
	//Obj("hidden_filter_string").value="";
	Obj("hidden_action").value="list";
	Obj("actions").submit();
}
function hideContextMenu ()
{
	try
	{
		if (cm!=null && cm.div.style.display=="")
			cm.Hide();
	}catch (err)
	{
		
	}
}

function sortTable(sort_field_name,sort_direction)
{
	var action = $("hidden_action").value;
	
	document.getElementById("hidden_action").value= (action=="edit"?"edit":"sort");
	document.getElementById("hidden_table_id").value=Obj("hidden_table_id").value;
	document.getElementById("hidden_sort_fields").value=sort_field_name + " " + sort_direction;
	document.getElementById("actions").submit();
}
function showUserDefinedSortParameters(Event)
{
	var div = Obj("div_sort_parameters");
	if(div==null) return;
	
	displayAtRelativeLocation (Event, div, 300, 200,-50, -50);
}
function sortTableUserDefined()
{
	if (Obj("user_defined_sort_field_names")==null) return; 
	var fields = Obj("user_defined_sort_field_names").value;
	
	
	if(fields==null || fields=="") return;
	var arr = fields.split(",");
	var arr2 = new Array();
	var iArr2=0;
	var params="";
	var pos=0;
	for(var a=0; a<arr.length; a++)
	{
		if (Obj("ud_sort_field_" + arr[a])!=null && Obj("ud_sort_field_" + arr[a]).value!="")
		{
			if(Obj("ud_sort_field_position_" + arr[a])!=null && Obj("ud_sort_field_position_" + arr[a]).value!="")
				pos =Obj("ud_sort_field_position_" + arr[a]).value;
			else pos=0;
			
			arr2[iArr2++] = String(pos) + "_" + arr[a] + " " + Obj("ud_sort_field_" + arr[a]).value
		}	
	}
	arr2.sort();
	for(var a=0; a<arr2.length; a++)
	{
		params += arr2[a].replace(/^[0-9]+\_/, "") + ",";		
	}
	if (params.length>0)
		params = params.substr(0,params.length-1);
	
	
	document.getElementById("hidden_action").value="sort";
	document.getElementById("hidden_table_id").value=Obj("hidden_table_id").value;
	document.getElementById("hidden_sort_fields").value=params;
	document.getElementById("actions").submit();
	
}

function showMessageForUser(user_id)
{
	var win_message = window.open("executor.aspx?user_id=" + user_id + "&action=my_message","Messages","width=400,height=200,left=300,top=100,scrollbars=yes");
	win_message.focus();
	
}
function sendMessageForUser (user_id)
{
	
	var win_message = window.open("","New_Messages_For_User","width=400,height=200,left=300,top=100,scrollbars=yes");
	Obj("for_user").value=user_id;
	Obj("new_message").value = Obj("new_message_for_user_" + user_id).value;
	Obj("form_message_for_user").target="New_Messages_For_User";
	Obj("form_message_for_user").submit();
}

function showAllRecordsPerPage (chk)
{
	if(Obj("button_first")!=null)
		Obj("button_first").disabled=chk.checked;
	if(Obj("button_previous")!=null)
		Obj("button_previous").disabled=chk.checked;
	if(Obj("button_next")!=null)
		Obj("button_next").disabled=chk.checked;
	if(Obj("button_last")!=null)
		Obj("button_last").disabled=chk.checked;
	if(Obj("show_n_records_per_page")!=null)
		Obj("show_n_records_per_page").disabled=chk.checked;
	
		
}
function manageUploadFolder(receiver_name,field_id)
{
	var receiver = Obj(receiver_name);
	if(receiver==null) return;
	modalDialogArgumentReceiver = receiver;
	var objUserId = Obj("user_id");
	if(objUserId!=null)
		var user_id = objUserId.value;
	var win = window.open("cms/upload_manager.aspx?user_id=" + user_id + "&id=" + field_id,"UploadManager"+field_id,
		"width=810,height=650,resizable=yes,scrollbars=yes");
	win.focus();
}
function showUploadDiv(upload_id)
{
	var div = Obj(upload_id);
	var div_upload = Obj(upload_id+ "_upload");
	if(div_upload!=null)
		if(div_upload.style.display == "")
		{
			div_upload.style.display = "none";
			if(div!=null)
			{
				div.disabled = false;
				if(div.title!=null)
					div.value=div.title;
			}
		}
		else
		{
			div_upload.style.display = "";
			div_upload.focus();
			if(div!=null)
			{
				div.disabled = true;
				div.title = div.value;
				div.value="";
			}
		}

	
}



    
    function submitSearchForm(EVENT)
    {
		if(EVENT!=null && EVENT.keyCode==13 && Obj("btn_search")!=null && Obj("btn_search").style.display!="none")
		{
			Obj("btn_search").click();//setAction("search");
			EVENT.cancelBubble = true;
			return false;
		}	
		return true;
    }
    
     function submitSaveForm(EVENT)
    {
		//if(EVENT!=null && EVENT.keyCode==13 && Obj("aspBtnSave")!=null && Obj("aspBtnSave").style.display!="none")
		//	Obj("aspBtnSave").click();
		
		return false;
		
    }
    
    function getCellByCellIndex(tr,index)
    {
		if(tr==null || tr.cells==null) return;
		for (var i=0; i< tr.cells.length; i++)
		{
			if(tr.cells[i]!=null && tr.cells[i].cellIndex==index)
				return tr.cells[i];				
		}
		return null;
    }
    function applyBatchEditing()
    {
		//debugger;
		Obj("div_batch_editing").style.display = "none";
		
		//Special hanlding for some columns 
		var isDocumentSelection = false;
		var isDocumentCategorySelection = false;
		if (window.currentCmsTableInfo)
		{
			isDocumentSelection			= window.currentCmsTableInfo.Name.toUpperCase () == "KTQ_DOCUMENT_VERSIONS" && currentBatchEditingColumn.column_name.toUpperCase () == "DOC_GUID";
			isDocumentCategorySelection	= (window.currentCmsTableInfo.Name.toUpperCase () == "KTQ_DOCUMENT_VERSIONS" && currentBatchEditingColumn.column_name.toUpperCase () == "DOCUMENT_CATEGORY_GUID") ||
				(window.currentCmsTableInfo.Name.toUpperCase () == "KTQ_DOCUMENT_CATEGORIES" && currentBatchEditingColumn.column_name.toUpperCase () == "PARENT_CATEGORY_GUID") 				
			;
		}
			
		try
		{
			
			if(currentBatchEditingColumn ==null) return false;
			var header_cell = currentBatchEditingColumn.object;
			if(header_cell==null) return false;
			
			var appendNewValue		= Obj("batch_editing_append_new_value").checked;
			var emptyFieldsOnly		= Obj("batch_editing_empty_fields_only").checked;
			
			var batchText			= Obj("batch_editing_new_text_value").value;
			var batchSelectedIndex	= Obj("batch_editing_values_list").selectedIndex;
			
			var batchStartValue		= Obj("batch_editing_start_value").value; 
			var batchStep			= Obj("batch_editing_increment_value").value;
			if(batchStep==null || String(batchStep)=="") batchStep = 0;
			batchStep = Number(batchStep);
			
			if(batchStep==null || batchStep=="") batchStep = 0;
			var batchListStep		= Obj("batch_editing_increment_list_value").value; 
			
			if(batchListStep==null || String(batchListStep)=="") batchListStep = 0;
			batchListStep = Number(batchListStep);
			
			
			var datePart		= Obj("batch_editing_date_increment_part").value;
			var newStartDate = null;
			var milliSecondsPerDay = 24*60*60*1000;
			
			var newValue = null;
			var newRangeValue = null;
			
			if(currentBatchEditingColumn.cms_data_type == null) currentBatchEditingColumn.cms_data_type = 1;
			currentBatchEditingColumn.cms_data_type  = Number(currentBatchEditingColumn.cms_data_type);
			
			if(currentBatchEditingColumn.cms_data_type==CMS_FIELD_TYPE_DATETIME)
			{
				if((String(batchStartValue)!="" && batchStartValue!=null) && 
						(batchStep==0 || batchStep!=null) &&
						datePart!=null && datePart!="")
				{
						var d,m,y;
					var arr ;
					if(batchStartValue.indexOf(".")>0)
					{
						arr = batchStartValue.split(".");
						d = arr[0];
						m = Number(arr[1])-1;
						y = arr[2];
					}
					else if(batchStartValue.indexOf("-")>0)
					{
						arr = batchStartValue.split("-");
						d = arr[0];
						m = Number(arr[1])-1;
						y = arr[2];
					}
					else if(batchStartValue.indexOf("/")>0)
					{
						arr = batchStartValue.split("/");
						if(currentCulture=="en-EN")
						{
							d = arr[0];
							m = Number(arr[1])-1;
						}else if(currentCulture=="en-US")
						{
							d = arr[1];
							m = Number(arr[0])-1;
						}
						y = arr[2];
					}
					else
					{
						alert(GetString("UnknownDateFormat"));
						return false;
					}
					
					newStartDate = new Date(y,m,d,0,0,0);
				}
				
			}
			
			//Get the row
			var tr = header_cell.parentNode;
			if(tr.tagName!=null && tr.tagName.toLowerCase()!="tr") return false;
			//Get the table
			var table = tr.parentNode;
			if(table.tagName!=null && table.tagName.toLowerCase()=="tbody")
				table = table.parentNode;
			if(table.tagName!=null && table.tagName.toLowerCase()!="table") return false;
			//debugger;
			var cellIndex = header_cell.cellIndex;
			var rangeCounter = 0;
			for (var r=1; r< table.rows.length; r++)
			{
				var row = table.rows[r];
				if(row.id!=null && row.id.indexOf("dependant_row_")==0) continue;
				var td2 = getCellByCellIndex (row, cellIndex);
				if(td2==null) continue;
				var input2 = td2.firstChild;
				if(input2==null) continue;
				newValue = newRangeValue= null;
				
				switch (currentBatchEditingColumn.cms_data_type)
				{
					case CMS_FIELD_TYPE_NUMBER:
					case CMS_FIELD_TYPE_TINYINTEGER:	
						//Only in empty fields?
						if(emptyFieldsOnly && input2.value!=null && String(input2.value)!="") break;
						
						if (batchStartValue!=null && String(batchStartValue)!="") batchStartValue = Number(String(batchStartValue).replace(",","."));
						else
							newRangeValue = 0;
						if((String(batchStartValue)!="" && batchStartValue!=null) && batchStep!=null && String(batchStep)!="")
						{
							newRangeValue = batchStartValue + (rangeCounter++)*batchStep;
						}
							
						
						if(appendNewValue)
							newValue = input2.value + "" + newRangeValue;
						else
							newValue = newRangeValue;
						
						newValue = String(newValue).replace(".",",");
						break;
					case CMS_FIELD_TYPE_DATETIME:
						//Only in empty fields?
						if(emptyFieldsOnly && input2.value!=null && String(input2.value)!="") break;
						
						if(newStartDate!=null)
						{
							var newDate = null;
							if(datePart =="d") //Increase by one day
							{
								newDate = new Date(Number(newStartDate) + Number(milliSecondsPerDay*batchStep*(rangeCounter++)));
							}
							else if(datePart =="m") //Increase by one month
							{
								var newMonth = newStartDate.getMonth() + batchStep*(rangeCounter++) +1;
								if(newMonth>12 || newMonth<1)
								{
									var countYears = Math.floor(newMonth/12);
									var countMonths = newMonth-(countYears*12)-1;
									newDate = new Date(newStartDate.getFullYear()+countYears,countMonths,newStartDate.getDate());
								}
								else if(newMonth==12)
									newDate = new Date(newStartDate.getFullYear(),11,newStartDate.getDate());
								else if(newMonth==1)
									newDate = new Date(newStartDate.getFullYear()-1,11,newStartDate.getDate());
								else
									newDate = new Date(newStartDate.getFullYear(),newMonth-1,newStartDate.getDate());
								
							}	
							else if(datePart =="y") //Increase by one year
							{
								newDate = new Date(newStartDate.getFullYear()+batchStep*(rangeCounter++), 
									newStartDate.getMonth(),newStartDate.getDate());
							}
							
							newRangeValue = newDate.toLocaleString();
						}
						else
							newRangeValue = "";
						if(appendNewValue)
							newValue = input2.value + "" + newRangeValue;
						else
							newValue = newRangeValue;
						break;
					case CMS_FIELD_TYPE_TEXT:
					case CMS_FIELD_TYPE_UPLOAD:
					case CMS_FIELD_TYPE_MEMO:
						//Only in empty fields?
						if(emptyFieldsOnly && input2.value!=null && String(input2.value)!="") break;
						
						if (batchStartValue!=null && String(batchStartValue)!="") batchStartValue = Number(batchStartValue);
						if(appendNewValue)
							newValue = input2.value + batchText;
						else
							newValue = batchText;
						
						if((String(batchStartValue)!="" && batchStartValue!=null) && (batchStep==0 || batchStep!=null) )
						{
							newRangeValue = batchStartValue + (rangeCounter++)*batchStep;	
						}
						if(newRangeValue!=null)
						{
							newValue += newRangeValue;
						}
						break;
						
					case CMS_FIELD_TYPE_REFERENCE:
						if (isDocumentCategorySelection || isDocumentSelection)
						{
							var text = Obj("batch_editing_multiple_selection_values").innerHTML;
							var value = currentBatchEditingColumn.default_value;
							var hiddenField = td2.getElementsByTagName("input")[0];					
							if(hiddenField==null) return false;
							//Only in empty fields?
							if(emptyFieldsOnly && hiddenField.value!=null && String(hiddenField.value)!="" && String(hiddenField.value)!="-1") break;
							
							var span = input2.getElementsByTagName("SPAN")[0];
							if(span==null) return false;
							hiddenField.value= value;
							span.innerHTML = text;
							break;
						}
						else
						{
							var select = Obj("batch_editing_values_list");		
							var startIndex = select.selectedIndex;
							var newSelectedIndex = startIndex + (rangeCounter++)*batchListStep;
							if(newSelectedIndex>(select.options.length-1)||newSelectedIndex<0)
							{
								var tmpCount = Math.floor(newSelectedIndex/select.options.length);
								newSelectedIndex = newSelectedIndex-(tmpCount*select.options.length);
							}
							var text = select.options[newSelectedIndex].text;
							var value = select.options[newSelectedIndex].value;
							var hiddenField = td2.getElementsByTagName("input")[0];					
							if(hiddenField==null) return false;
							
							//Only in empty fields?
							if(emptyFieldsOnly && hiddenField.value!=null && String(hiddenField.value)!="" && String(hiddenField.value)!="-1") break;
							
							
							var span = input2.getElementsByTagName("SPAN")[0];
							if(span==null) return false;
							hiddenField.value= value;
							span.innerText = text;
						}
						break;
					case CMS_FIELD_TYPE_BOOLEAN:
						//Check if there are 3 values for the boolean field 
						if(td2.innerHTML.indexOf ("radio")>0 && td2.innerHTML.indexOf ("(NULL)")>0)
						{
							try
							{
								var inputYes = td2.firstChild;
								var inputNo = inputYes.nextSibling.nextSibling;
								var inputUndefined = td2.lastChild.previousSibling;
							
								if(batchSelectedIndex==0) //Yes 
									inputYes.checked = true;
								else if(batchSelectedIndex==1) //No
									inputNo.checked = true;
								else if(batchSelectedIndex==2) //Undefined
									inputUndefined.checked = true;
							}
							catch (err){}
						}
						else if(td2.firstChild && td2.firstChild.firstChild && td2.firstChild.firstChild.getAttribute("extended")=="true")
						{
							try
							{
								input2 = td2.firstChild.firstChild;
								
								if(batchSelectedIndex==0) //Yes 
									setCheckboxState (input2, "1");
								else if(batchSelectedIndex==1) //No
									setCheckboxState (input2, "0");
								else if(batchSelectedIndex==2) //Undefined
									setCheckboxState (input2, "(NULL)");
							}
							catch (err){}
						}
						else 
						{
							input2.checked = (batchSelectedIndex==0);
						}
						break;
					
					case CMS_FIELD_TYPE_MULTIPLESELECTION:
					case CMS_FIELD_TYPE_STEP_BY_STEP:
						var text = Obj("batch_editing_multiple_selection_values").innerHTML;
						var value = (currentBatchEditingColumn.data_subtype == "extended" ? 
							"[" + currentBatchEditingColumn.row_guid + "]":
							currentBatchEditingColumn.default_value);
						
						var hiddenField = td2.getElementsByTagName("input")[0];					
						if(hiddenField==null) return false;
						//Only in empty fields?
						if(emptyFieldsOnly && hiddenField.value!=null && String(hiddenField.value)!="" && String(hiddenField.value)!="-1") break;
						
						var span = input2.getElementsByTagName("SPAN")[0];
						if(span==null) return false;
						hiddenField.value= value;
						span.innerHTML = text;
						
						var wrappingDiv = span.parentElement;
						if(wrappingDiv !=null )
							wrappingDiv = wrappingDiv.parentElement;
						if(wrappingDiv !=null)
						{
							wrappingDiv.style.overflow="visible";
							var height = wrappingDiv.scrollHeight;
							if(height>200) height = 200;
								wrappingDiv.style.height = height +"px";
							wrappingDiv.style.overflow="auto";
						}
						break;
					default:
						return false;
				}
				if(newValue!=null)
					input2.value = newValue;
			}
			
			
			
			
			return false;
		}catch (err)
		{
			window.status = err.description;
			return false;
		}
		return false;
    }
    function BatchEditingColumn()
    {
		this.cms_data_type = 1;
		this.data_type = null;
		this.data_subtype = null;
		this.column_name = null;
		this.column_title = null;
		this.table_name = null;
		this.table_title = null;
		this.is_nullable = false;
		this.default_value = null;
		this.selected_index = -1;
		this.object = null;
		this.row_guid = null;
		this.input_field = null;
    }
    var currentBatchEditingColumn = null;
    function startBatchEditing()
    {
		
		//Special hanlding for some columns 
		var isDocumentSelection = false;
		var isDocumentCategorySelection = false;
		if (window.currentCmsTableInfo)
		{
			isDocumentSelection			= window.currentCmsTableInfo.Name.toUpperCase () == "KTQ_DOCUMENT_VERSIONS" && currentBatchEditingColumn.column_name.toUpperCase () == "DOC_GUID";
			isDocumentCategorySelection	= (window.currentCmsTableInfo.Name.toUpperCase () == "KTQ_DOCUMENT_VERSIONS" && currentBatchEditingColumn.column_name.toUpperCase () == "DOCUMENT_CATEGORY_GUID") ||
				(window.currentCmsTableInfo.Name.toUpperCase () == "KTQ_DOCUMENT_CATEGORIES" && currentBatchEditingColumn.column_name.toUpperCase () == "PARENT_CATEGORY_GUID") ;
		}
			
		var div = Obj("div_batch_editing");
		if(div==null) return false;			
			
		var header_cell = this.parentNode;
		if (header_cell==null) return false;
		if(currentBatchEditingColumn ==null) return false;
		var select = Obj("batch_editing_values_list");								
			
		if(
			(
				currentBatchEditingColumn.cms_data_type==CMS_FIELD_TYPE_BOOLEAN ||
				currentBatchEditingColumn.cms_data_type==CMS_FIELD_TYPE_REFERENCE
			)
			&& 
			!
			(
				isDocumentCategorySelection || isDocumentSelection
			)
		)
		{
			select.style.display = "";
		}
		else
			select.style.display = "none";
			
		if(
			(
				currentBatchEditingColumn.cms_data_type==CMS_FIELD_TYPE_MULTIPLESELECTION ||
				currentBatchEditingColumn.cms_data_type==CMS_FIELD_TYPE_STEP_BY_STEP
			)
			||
			(
				isDocumentCategorySelection || isDocumentSelection
			)
		)
		{
			var hidden_field = Obj(currentBatchEditingColumn.row_guid + "_" + currentBatchEditingColumn.column_name);
			
			if(hidden_field!=null)
			{
				var span = Obj("span_" + currentBatchEditingColumn.row_guid + "_" + currentBatchEditingColumn.column_name);
				
				if(span!=null)
				{
					currentBatchEditingColumn.default_value = hidden_field.value;
					Obj("batch_editing_multiple_selection_values").innerHTML = span.innerHTML;
					
					if (
						isDocumentCategorySelection || isDocumentSelection
					)
					{
						Obj("batch_editing_new_text_value").style.display = "none";
						Obj("tr_batch_editing_text_data_types").style.display = "";
						Obj("span_batch_editing_list_value_increment").style.display = "none";				
						Obj("tr_batch_editing_numeric_data_types").style.display = "none";
						Obj("tr_batch_editing_append_new_value").style.display = "none";
						Obj("batch_editing_append_new_value").checked = false;
						Obj("batch_editing_multiple_selection_values").style.display = "";
					}	
				}
			}
		}
		displayAtRelativeLocation (event, div, 400, 200,20, 20);
		return false;
    }
    function inputFieldGotFocus(input, Event)
    {
		
		var inputTag = input.tagName.toLowerCase();
		var inputType = input.type;
		
		if((inputTag=="input" && inputType=="text") || inputTag=="textarea")
			input.select();
		//Debug only!!!
		if(inputTag=="input" && inputType=="password")
		{
			addEvent(input, "ondblclick", function (e)
			{
				//Display the password in plain text
				if(!e) return;
				if(e.shiftKey==true && e.ctrlKey==true)
				{
					var inp = getEventSource(e);
					if(!inp) return;
					inp.title = inp.value;
				}
			});
		}
		var editingMode = $("editing_mode");
		if(editingMode==null || ( editingMode!=null  && editingMode.value=="single")) return false;
		
		//Add a button for batch editing
		//Get the cell of this input field
		var td = input.parentNode;
		if (input.getAttribute("extended")=="true")
			td = td.parentNode;
			
		var refDiv, refHiddenField, rowGuid;
		if(td.tagName!=null && td.tagName.toLowerCase()!="td") 
		{
			if(td.tagName!=null && td.tagName.toLowerCase()=="div") 
			{	
				refHiddenField = td.nextSibling;							
				td = td.parentNode;
			}
		}
		if(td.tagName!=null && td.tagName.toLowerCase()!="td")  return false;
		//Get the row
		var tr = td.parentNode;
		if(tr.tagName!=null && tr.tagName.toLowerCase()!="tr") return false;
		//Get the table
		var table = tr.parentNode;
		if(table.tagName!=null && table.tagName.toLowerCase()=="tbody")
			table = table.parentNode;
		if(table.tagName!=null && table.tagName.toLowerCase()!="table") return false;
		
		var cellIndex = td.cellIndex;
		
		var headerCell = getCellByCellIndex (table.rows[0],cellIndex);
		headerCell.setAttribute("default_value",input.value);
		
		headerCell.setAttribute("selected_index",(inputTag=="select"?inputTag.selectedIndex:(inputTag=="input" && inputType=="checkbox"?(input.checked?0:1):-1)));
		
		currentBatchEditingColumn = new BatchEditingColumn();
		with (currentBatchEditingColumn)
		{
			cms_data_type = headerCell.getAttribute("cms_data_type");
			data_type = headerCell.getAttribute("data_type");
			data_subtype = headerCell.getAttribute("data_subtype");
			column_name = headerCell.getAttribute("column_name");
			column_title = headerCell.getAttribute("column_title");
			table_name = headerCell.getAttribute("table_name");
			table_title = headerCell.getAttribute("table_title");
			is_nullable = headerCell.getAttribute("is_nullable");
			default_value = headerCell.getAttribute("default_value");
			selected_index = headerCell.getAttribute("selected_index");			
			object = headerCell;
			input_field = input;
		}
		//Batch editing 
		if(!Obj("batch_editing_multiple_selection_values"))return false;
		if(Obj("batch_editing_multiple_selection_values"))
			Obj("batch_editing_multiple_selection_values").style.display = "none";
		if(Obj("span_batch_editing_list_value_increment"))
			Obj("span_batch_editing_list_value_increment").style.display = "none";
				
		if(currentBatchEditingColumn.cms_data_type == null) currentBatchEditingColumn.cms_data_type = 1;
		currentBatchEditingColumn.cms_data_type  = Number(currentBatchEditingColumn.cms_data_type);
		switch (currentBatchEditingColumn.cms_data_type)
		{
			case CMS_FIELD_TYPE_MULTIPLESELECTION:
			case CMS_FIELD_TYPE_STEP_BY_STEP:
				if(refHiddenField == null || refHiddenField.id==null || currentBatchEditingColumn.column_name==null ) return false;				
				rowGuid = refHiddenField.id.substr(0,refHiddenField.id.length-currentBatchEditingColumn.column_name.length-1);
				currentBatchEditingColumn.row_guid = rowGuid;
				currentBatchEditingColumn.default_value = refHiddenField.value;
				Obj("batch_editing_new_text_value").style.display = "none";
				Obj("tr_batch_editing_text_data_types").style.display = "";
				Obj("span_batch_editing_list_value_increment").style.display = "none";				
				Obj("tr_batch_editing_numeric_data_types").style.display = "none";
				Obj("tr_batch_editing_append_new_value").style.display = "none";
				Obj("batch_editing_append_new_value").checked = false;
				Obj("batch_editing_multiple_selection_values").style.display = "";
				Obj("batch_editing_multiple_selection_values").innerHTML = Obj("span_" + rowGuid + "_" + currentBatchEditingColumn.column_name).innerHTML;
						
				break;
			case CMS_FIELD_TYPE_REFERENCE:				
				if(refHiddenField == null || refHiddenField.id==null || currentBatchEditingColumn.column_name==null ) return false;				
				rowGuid = refHiddenField.id.substr(0,refHiddenField.id.length-currentBatchEditingColumn.column_name.length-1);
				currentBatchEditingColumn.row_guid = rowGuid;
				currentBatchEditingColumn.default_value = refHiddenField.value;
				Obj("batch_editing_new_text_value").style.display = "none";
				Obj("tr_batch_editing_text_data_types").style.display = "";
				Obj("span_batch_editing_list_value_increment").style.display = "";
				
				Obj("tr_batch_editing_numeric_data_types").style.display = "none";
				Obj("tr_batch_editing_append_new_value").style.display = "none";
				Obj("batch_editing_append_new_value").checked = false;
				refDiv = Obj("div_"+ currentBatchEditingColumn.column_name);
				
				if(refDiv==null) return false;
				var select = Obj("batch_editing_values_list");		
						
				//Fill the list anew
				if(select.name != "batch_editing_values_list_" + currentBatchEditingColumn.column_name)
				{
					select.name = "batch_editing_values_list_" + currentBatchEditingColumn.column_name;
					select.innerHTML = "";
					var arr = refDiv.getElementsByTagName("A");
					if(arr==null) return false;
					for(var a=0; a < arr.length; a++)
					{
						var ahref = arr[a];
						if(ahref.firstChild!=null && ahref.firstChild.nodeName!="#text") continue;
						var val = ahref.getAttribute("value");						
						if(val==null) val=-1;
						select.options[select.options.length] = new Option(ahref.innerText,val);
					}
					
				}
				select.style.display = "none";
				setListboxIndex (select,refHiddenField.value,true);
				
						
				break;
			case CMS_FIELD_TYPE_BOOLEAN:
				Obj("tr_batch_editing_text_data_types").style.display = "";
				Obj("tr_batch_editing_numeric_data_types").style.display = "none";
				var select = Obj("batch_editing_values_list");
				select.innerHTML = "";
				select.options[0] = new Option(GetString("Yes"));
				select.options[1] = new Option(GetString("No"));
				select.options[2] = new Option(GetString("Undefined"));
				
				select.style.display = "none";
				Obj("batch_editing_new_text_value").style.display = "none";
				Obj("batch_editing_new_text_value").value = "";
				select.selectedIndex = currentBatchEditingColumn.selected_index;
				Obj("tr_batch_editing_append_new_value").style.display = "none";
				Obj("batch_editing_append_new_value").checked = false;
				break;
			
			case CMS_FIELD_TYPE_NUMBER:
			case CMS_FIELD_TYPE_TINYINTEGER:
				Obj("tr_batch_editing_text_data_types").style.display = "none";
				Obj("tr_batch_editing_numeric_data_types").style.display = "";
				Obj("batch_editing_new_text_value").value = "";
				Obj("batch_editing_values_list").style.display ="none";
				Obj("batch_editing_start_value").value = currentBatchEditingColumn.default_value;
				Obj("tr_batch_editing_append_new_value").style.display = "none";
				Obj("batch_editing_append_new_value").checked = false;
				break;
			case CMS_FIELD_TYPE_DATETIME:
				Obj("tr_batch_editing_numeric_data_types").style.display = "";
				Obj("tr_batch_editing_text_data_types").style.display = "none";
				Obj("batch_editing_values_list").style.display ="none";
				Obj("batch_editing_date_increment_part").style.display = "";
				Obj("batch_editing_increment_value").value = 1;
				Obj("batch_editing_start_value").value = currentBatchEditingColumn.default_value;
				Obj("tr_batch_editing_append_new_value").style.display = "none";
				Obj("batch_editing_append_new_value").checked = false;
				break;
			case CMS_FIELD_TYPE_TEXT:
			case CMS_FIELD_TYPE_UPLOAD:
			case CMS_FIELD_TYPE_MEMO:
				
				Obj("batch_editing_values_list").style.display ="none";
				Obj("batch_editing_new_text_value").style.display = "";				
				Obj("tr_batch_editing_numeric_data_types").style.display = "";
				Obj("tr_batch_editing_text_data_types").style.display = "";
				Obj("batch_editing_date_increment_part").style.display = "none";
				Obj("batch_editing_increment_value").value = "";
				Obj("batch_editing_start_value").value = "";
				Obj("batch_editing_new_text_value").value = currentBatchEditingColumn.default_value;
				Obj("tr_batch_editing_append_new_value").style.display = "";
				
				break;
			default:
				return false;
		}
		if(inputType=="textarea")
			Obj("batch_editing_new_text_value").rows = 5;
		else
			Obj("batch_editing_new_text_value").rows = 1;
			
		var btn = document.getElementById("btn_batch_editing");
		if(btn!=null && btn.parentNode == headerCell) return true;
		
		if(btn!=null) btn.parentNode.removeChild(btn);
		var btnStyle = "margin-left:5px;"; //height:8pt;padding:0px;font-size:8pt;border:1px solid black;background-color:white";
		
		btn =document.createElement("<input align=absmiddle type=\"image\" src=\"" + getVirtualPath() + "images/menu/cm_batch_editing.gif\" title=\"" + GetString("BatchEditing") + "\" id=\"btn_batch_editing\" style=\"" + btnStyle + "\">")
		
		btn.onclick = startBatchEditing;
			
		headerCell.appendChild (btn);
		Obj("batch_editing_column_name").innerHTML = currentBatchEditingColumn.column_title;
		
		
		return true;
    }
    function keepSearchingNextCellForEditing(td2)
    {
		if( td2.style.display=="none") return true;
		else if(td2.firstChild==null) return true;
		else if (td2.firstChild.style!=null && td2.firstChild.style.display=="none") return true;
		else if (td2.firstChild.tagName==null) return true;
		else if (
			!(td2.firstChild.tagName.toLowerCase()=="input" && td2.firstChild.type!=null && td2.firstChild.type!="hidden") && !(td2.firstChild.tagName.toLowerCase()=="textarea") ) return true;
		else if (
				td2.firstChild.tagName.toLowerCase()=="div" && td2.firstChild.className=="div_htmleditor"
				) return false;
				
		
		return false;
    }
    var lastCursorRange = null;
   
    function navigateUserCursor (input, Event)
    {
		var left, right, up, down;
		left	= 37;
		up		= 38;
		right	= 39;
		down	= 40;
		if(Event.keyCode!=left &&
			Event.keyCode!=down &&
			Event.keyCode!=up &&
			Event.keyCode!=right) return false;
			
		//Check for navigating keys
		var code = Event.keyCode;
		try
		{
			//Get the cell of this input field
			var td = input.parentNode;
			if(td.tagName!=null && td.tagName.toLowerCase()!="td") return false;
			//Get the row
			var tr = td.parentNode;
			if(tr.tagName!=null && tr.tagName.toLowerCase()!="tr") return false;
			//Get the table
			var table = tr.parentNode;
			if(table.tagName!=null && table.tagName.toLowerCase()=="tbody")
				table = table.parentNode;
			if(table.tagName!=null && table.tagName.toLowerCase()!="table") return false;
				
			var tr2, td2, input2;
			var inputTag = input.tagName.toLowerCase();
			var inputType = input.type;
			
			
			//Get the index of this cell:
			var cellIndex = td.cellIndex;
			//window.status = "Zellenindex: " + td.cellIndex;
			//debugger;
			//Get the index of this row:
			var rowIndex = td.parentNode.rowIndex;
			
			switch (code)
			{
				case up:		//Move up
					//Textarea: check, if in the first line
					if(input!=null && input.tagName!=null && input.tagName.toLowerCase()=="textarea")
					{
						var tRange = input.createTextRange();
						if(tRange==null) return false;
						var range2 = document.selection.createRange();
						if(range2==null) return false;
						if(range2.text!=null && range2.text!="") return false;
						//alert($Attr(range2) + "\n\n" + $Attr(tRange));
						if(!(range2.boundingTop == tRange.boundingTop && lastCursorRange!=null && range2.isEqual(lastCursorRange)))
						{
							lastCursorRange = range2;
							return false;
						
						}									
						
					}
						
						
					//First line => no moving up
					if(rowIndex == 1 && 
						(td.parentNode.previousSibling && td.parentNode.previousSibling.cells[cellIndex] && !td.parentNode.previousSibling.cells[cellIndex].firstChild)
						 ||
						(td.parentNode.previousSibling && td.parentNode.previousSibling.cells[cellIndex] && td.parentNode.previousSibling.cells[cellIndex].firstChild 
							&&	td.parentNode.previousSibling.cells[cellIndex].firstChild.type 
							&&  !td.parentNode.previousSibling.cells[cellIndex].firstChild.type.
							equals("text","textarea")
						)
					) return false;
					else 
					{
						//Find cell above
						tr2 = tr.previousSibling;
						if(tr2==null) return false;
						if(tr2.id!=null && tr2.id.indexOf("dependant_row_")==0) tr2 = tr2.previousSibling;
						if(tr2==null) return false;
						
						if(cellIndex>(tr2.cells.length-1)) return false;
						td2 = getCellByCellIndex (tr2, cellIndex);
						input2 = td2.firstChild;
						while (keepSearchingNextCellForEditing(td2))					   
					{
							tr2 = tr2.previousSibling;					
							if(tr2==null) break;
							if(tr2.id!=null && tr2.id.indexOf("dependant_row_")==0) 
								tr2 = tr2.previousSibling;
							if(tr2==null) break;
							if(cellIndex>(tr2.cells.length-1)) return false;
							td2 = getCellByCellIndex (tr2, cellIndex)
							if(td2==null) break;
					}
						
					if(td2 == null) return false;	
					input2 = td2.firstChild;
						
					}
					break;
					
					
				case down:	//Move down
					//Textarea: check, if in the first line
					if(input!=null && input.tagName!=null && input.tagName.toLowerCase()=="textarea")
					{
						var tRange = input.createTextRange();
						if(tRange==null) return false;
						var range2 = document.selection.createRange();
						if(range2==null) return false;
						if(range2.text!=null && range2.text!="") return false;
						
						if(!((range2.boundingTop+range2.boundingHeight) == (tRange.boundingTop+tRange.boundingHeight) && lastCursorRange!=null && range2.isEqual(lastCursorRange)))
						{
							lastCursorRange = range2;
							return false;
						
						}									
						
					}
						
					//Find cell below
					tr2 = tr.nextSibling;
					
					if(tr2==null) return false;
					if(tr2.id!=null && tr2.id.indexOf("dependant_row_")==0) tr2 = tr2.nextSibling;
					if(tr2==null) return false;
					
					if(cellIndex>(tr2.cells.length-1)) return false;
					td2 = getCellByCellIndex (tr2, cellIndex)
					input2 = td2.firstChild;
					while (keepSearchingNextCellForEditing(td2))					   
					{
							tr2 = tr2.nextSibling;					
							if(tr2==null) break;
							if(tr2.id!=null && tr2.id.indexOf("dependant_row_")==0) 
								tr2 = tr2.nextSibling;
							if(tr2==null) break;
							if(cellIndex>(tr2.cells.length-1)) return false;
							td2 = getCellByCellIndex (tr2, cellIndex)
							if(td2==null) break;
					}
						
					if(td2 == null) return false;	
					input2 = td2.firstChild;
					
					break;
				case right:	
					//Move right TEXT, TEXTAREA					
					if((inputTag=="input" && inputType=="text") || inputTag=="textarea")
					{
						var tRange = input.createTextRange();
						if(tRange==null) return false;
						var range2 = document.selection.createRange();
						if(range2==null) return false;
						if(range2.text!=null && range2.text!="") return false;
						//alert($Attr(range2) + "\n\n" + $Attr(tRange));
						//Check, if the cursor is at the right margin of the input field
						if(range2.boundingLeft == (tRange.boundingWidth+tRange.boundingLeft) && lastCursorRange!=null && range2.isEqual(lastCursorRange))
						{
							//Move to the right cell
							td2 = td.nextSibling;
							if(td2!=null)
								while (keepSearchingNextCellForEditing(td2))					   
								{
									td2 = td2.nextSibling;
									if(td2==null) break;
								}
								
							if(td2 == null) return false;	
							input2 = td2.firstChild;
						}
						lastCursorRange = range2;
					}
					//CHECKBOX, RADIOBUTTON
					else if(inputTag=="input" && (inputType=="checkbox" || inputType=="radio"))
					{
						td2 = td.nextSibling;
						if(td2!=null)
							while (keepSearchingNextCellForEditing(td2))						   
							{
								td2 = td2.nextSibling;
								if(td2==null) break;
							}
							
						if(td2 == null) return false;	
						input2 = td2.firstChild;
					}
					break;
				case left:	
					//Move left TEXT, TEXTAREA					
					if((inputTag=="input" && inputType=="text") || inputTag=="textarea")
					{
						var tRange = input.createTextRange();
						if(tRange==null) return false;
						var range2 = document.selection.createRange();
						if(range2==null) return false;
						if(range2.text!=null && range2.text!="") return false;
						//Check, if the cursor is at the left margin of the input field
						if(range2.boundingLeft == tRange.boundingLeft && lastCursorRange!=null && range2.isEqual(lastCursorRange))
						{
							//Move to the right cell
							td2 = td.previousSibling;
							if(td2!=null)
								while (keepSearchingNextCellForEditing(td2))
								{
									td2 = td2.previousSibling;
									if(td2==null) break;
								}
								
							if(td2 == null) return false;	
							input2 = td2.firstChild;
						}
						lastCursorRange = range2;
					}
					//CHECKBOX, RADIOBUTTON
					else if(inputTag=="input" && (inputType=="checkbox" || inputType=="radio"))
					{
						//Move to the right cell
						td2 = td.previousSibling;
						if(td2!=null)
							while (keepSearchingNextCellForEditing(td2))						   
							{
								td2 = td2.previousSibling;
								if(td2==null) break;
							}
							
						if(td2 == null) return false;	
						input2 = td2.firstChild;
					}
			}
			
		
			if(input2!=null)
			{
				//No highlighting, if this is done somewhre else 
				if (!window._GlobalOptions || !window._GlobalOptions.NoHighlightOnCursorNavigation)
				{	
					//alert(input2.outerHTML);
					if (input2.type!="radio" && input2.type!="checkbox")
					{
						
						if(input2.onblur!=null)
							input2.setAttribute("orig_onblur",input2.onblur);
						input2.onblur = function () 
						{
							this.style.cssText = this.getAttribute("orig_border");
							this.onblur = this.getAttribute("orig_onblur");
								
						};
						
						input2.setAttribute("orig_border",input2.style.cssText);
						input2.style.border="1px solid black";				
					}
				
				}
				input2.focus();
				
			}
			callEvent(input, "onblur");
			return false;
		}
		catch (err)
		{
			
			window.status = err.description;
		}
		return false;
    }
    function displayTableContentAsList(Event)
    {
		if(Event.keyCode==13)
			Obj("aspBtnList").click();
    }
    
    
    function openLinksGroup(lg,open)
    {
		var cookies = getCookie("qsm_links_groups");
		if(cookies==null) cookies="";
		
		if(!open)
			cookies = cookies.replace(lg+",","");
		else
			if(cookies.indexOf(lg+",")<0)
				cookies+=lg+",";
		setCookie("qsm_links_groups",cookies);			
    }
    function openLinksGroup2(lg,open)
    {
		var cookies = getCookie("qsm_links_groups");
		if(cookies==null) cookies="";
		
		if(!open)
			cookies = cookies.replace("2_" + lg+",","");
		else
			if(cookies.indexOf("2_" + lg)<0)
				cookies+="2_" + lg+",";
		setCookie("qsm_links_groups",cookies);			
    }
    
    function reopenLinksGroups()
    {
		var lgs= getCookie("qsm_links_groups");
		if(lgs==null) return;
		var lg = lgs.split(",");
		for(var i=0; i<lg.length;i++)
		{
			if(lg[i]!=null && lg[i]!="")
			{
				if(lg[i].indexOf("db_")==0) //tables groups
				{
					showSubGroup2(lg[i]);
				}
				else if(lg[i].indexOf("2_")==0)
				{
					displayLinksGroup(lg[i].substring(2));
				}
				else
				{
					if(!document.all)displayCMSTables();
					else{if(Obj(lg[i])!=null) Obj(lg[i]).click();}
				}
			}
		}
    }
    
    function repositionWaitingScreen ()
    {
				
			
			var objWaitingScreen = Obj("tblWaitingScreen");
			var objWidth, objHeight;			
			if(!isMS())
			{
				objWidth = String (objWaitingScreen.style.width);
			}
			else
			{
				objWidth = String (objWaitingScreen.currentStyle.width);
			}
			
			if (objWidth!=null)
				objWidth = Number(objWidth.substr(0,objWidth.length-2));
			else
				objWidth=300;
			
			if(!isMS())
				objHeight= String (objWaitingScreen.style["height"]);
			else
				objHeight= String (objWaitingScreen.currentStyle.height);
			
			if (objHeight!=null && objHeight!="auto")
				objHeight = Number(objHeight.substr(0,objHeight.length-2));
			else
				objHeight=50;		
		if (isNS())
		{
			objWaitingScreen.style.left=(window.innerWidth- objWidth)/2;
			objWaitingScreen.style.top= (window.innerHeight-objHeight)/2;		
		}
		else
		{
			objWaitingScreen.style.left=(document.body.offsetWidth- objWidth)/2;
			objWaitingScreen.style.top= (document.body.offsetHeight-objHeight)/2;		
		}	
		//showProgressAnimation();
    }
    
    var imgRotationProgressCounter=0;
	var imgRotationProgressTimeout=null;			 
    function showProgressAnimation(Event)
	{
		imgRotationProgressCounter = 0;
		var tblProgress = Obj("tblWaitingScreen");
		if(tblProgress==null) return;
		var tblProgressBar = Obj("tblProgressBar");
		if(tblProgressBar==null) return;
		//Obj("tblProgressText").innerHTML= "Bitte warten, das Bild wird gedreht ...";
		
		tblProgressBar.width=0;
		tblProgress.style.display="inline";
		animateImageRotationProgress();
		
	}
	function animateImageRotationProgress()
		{
			imgRotationProgressCounter++;
			if(imgRotationProgressCounter>28)
				imgRotationProgressCounter-=3;
			Obj("tblProgressBar").width = 10*imgRotationProgressCounter;
			imgRotationProgressTimeout = window.setTimeout("animateImageRotationProgress()",20);
		}
	
	
	function selectAllColumnsForEditing(chk)
	{
		var tbl = Obj("tblColumnsSelectionForEditing");
		if(!tbl) return;
		for (var i=0; i<tbl.rows.length;i++)
		{
			var row = tbl.rows[i];
			for (var j=0; j<row.cells.length;j++)
			{
				var cell = row.cells[j];
				if(cell.childNodes.length>0)
				{				
					var chkBox = cell.childNodes[0];
					if(chkBox)
						chkBox.checked = chk.checked;
				}
			}	
		}
	}
	function hideColumnSum(td,Event)
	{
		return;
		if(td!=null)
			showToolTip(Event,"hide");
		
	}
	function moveColumnSum(td,Event)
	{
		return;
		if(td!=null)
			showToolTip(Event,"move");
		
	}
	function showColumnSum(td,colTitle, dataType,Event)
	{
		return;
		try
		{
			if(td==null) return;
			var cellIndex = td.cellIndex;
			var tRow= td.parentNode;
			var nextRow = tRow.nextSibling;
			var sum = 0;
			window.status = "";	
			var maxCount = 1000;		
			while (maxCount>0 && nextRow!=null)
			{
				maxCount--;
				if(nextRow.id==null || nextRow.id.indexOf("dependant_row")==0 || nextRow.style.display=="none")
				{
					nextRow = nextRow.nextSibling;
					continue;
				}
				var actCell = nextRow.cells[cellIndex];
				if(actCell==null) { nextRow = nextRow.nextSibling; continue;};
				if(!actCell.hasChildNodes()) { nextRow = nextRow.nextSibling; continue;};
				var textNode = actCell.firstChild;
				if(textNode==null) { nextRow = nextRow.nextSibling; continue;};			
				var text = (textNode.nodeType==3?textNode.nodeValue:(textNode.type=="text"?textNode.value:0));
				
				if(text==null || text=="") text = 0;
				
				var num = 0;
				switch (dataType)
				{
					case DATA_TYPE_DECIMAL:
					case DATA_TYPE_FLOAT:
					case DATA_TYPE_MONEY:
					case DATA_TYPE_NUMERIC:
					case DATA_TYPE_REAL:
					case DATA_TYPE_SMALLMONEY:
						num = parseFloat(text.replace(",","."));
						break;
					default:
						num = parseInt(text);					
						break;				
				}
				sum += num;			
				nextRow = nextRow.nextSibling;
			}
			if(td!=null) 
				showToolTip(Event,"show",GetString("ColumnSum"),sum,100,40,false);
		}catch (err)
		{
			
		}
	}
	
	function showDependantCmsTablesSelection(Event,row_id,dep_tables)
	{
		var tbl = Obj("tblDependantCmsTableSelection");
		if(tbl==null) return;
		var div = Obj("divDependantCmsTableSelection");
		if(div ==null) return;
		
		var tablesList = "";
		for (var i=0;i<dep_tables.length;i++)
		{
			
			var dep_table = dep_tables[i];
			tablesList += "<a style=\"color:black;\" href=\"javascript:void(0)\" " + 
				" onclick=\"selectDependantTable(" + 
				"	'" + row_id + "'," +
				"	'" + dep_table["table_id"] + "',"+
				"	'" + dep_table["table_name"] + "',"+
				"	'" + dep_table["table_title"] + "',"+
				"	'" + dep_table["value_column"] + "',"+
				"	'" + dep_table["value_for_ref"] + "'" +				
				")\">" + 
				dep_table["table_title"] + "</a><br>";
		}
		div.innerHTML = tablesList;
		displayAtRelativeLocation (Event, tbl, 300, 150,10, 5);
		tbl.style.display = "";
			
	}
	function getTopContentsFrame ()
	{
		
		var win = window;
		
		var topWindow = getTopWindow ();
		
		if (topWindow && topWindow.document)
		{
			var topFrame = topWindow.document.getElementById ("contents");
			if (!topFrame)
				return topWindow;
			else
				return topFrame;
		}
		else 
		{
			return null;
		}
		
		
		return null;
		var topFrame = win.frameElement;
		if (!topFrame) return getTopWindow();
		if (topFrame.id == "contents") return topFrame;
		var lastFrame = null;
		while (win.frameElement)
		{
			topFrame = win.frameElement;
			if (topFrame.id == "contents")
				return topFrame;
			
			win = win.parent;
		}
		
		return null;//getTopWindow ();
	}
	function getTopWindow ()
	{
		var win = window;
		while (win.parent)
		{
			win = win.parent;
			if (win == win.parent) break;
			
		}
		return win;
	}
	function showDependantCmsTables (Event,ahref,row_id, dep_tables)
	{
		lastAhrefForDependantCmsTables = ahref;
		var dependantRowHeight = 400;
		var depRow = Obj("dependant_row_" + row_id);
		if(depRow==null) return;
		if(ahref==null) return;
		
		//Image and row
		var btnImg = (ahref.childNodes?ahref.childNodes[0]:null);
		if(btnImg!=null)
		{
			if(btnImg.innerHTML == "+") //src!=null && btnImg.src.indexOf("plus2.gif")>0) //Is closed
			{
				if(dep_tables.length>1)
				{
					/*if(tmpSelectedCmsSubsheet!=null)
						selectDependantTable (row_id,
							tmpSelectedCmsSubsheet["table_id"],
							tmpSelectedCmsSubsheet["table_name"],
							tmpSelectedCmsSubsheet["table_title"],
							tmpSelectedCmsSubsheet["value_column"], 
							dep_tables[0]["value_for_ref"]);						
					else
					*/
						showDependantCmsTablesSelection (Event,row_id,dep_tables);
				}
				else
				{
					//Dependant table object
					var depT = dep_tables[0];
								
					selectDependantTable(row_id,depT["table_id"],depT["table_name"],depT["table_title"],depT["value_column"], depT["value_for_ref"]);
				}
				
				//Set bg color of the margin cell to "..."
				/*if(depRow.cells!=null && depRow.cells[0]!=null)
				{
					var marginCell = depRow.cells[0];
					marginCell.setAttribute ("old_background_filter",marginCell.style.getAttribute("progid:DXImageTransform.Microsoft.gradient"));
					marginCell.style.removeAttribute ("progid:DXImageTransform.Microsoft.gradient");
					marginCell.className = "cms_cell_empty_dep_row";
					showMsg(depRow.cells[0].className);
				}*/
			}
			else														//Is open
			{
				btnImg.innerHTML = "+";
				//btnImg.src = "images/plus2.gif";
				if(dep_tables.length==1)
				{
					btnImg.title = GetString("ShowX").replace("{0}",dep_tables[0]["table_title"]);
				}
				else
				{
					btnImg.title = GetString("ShowSubSheet");
				}
				
					
				if(btnImg.nextSibling!=null)
						btnImg.nextSibling.innerHTML = " " + btnImg.title;
				depRow.style.display = "none";
				
				//Resize the frame height
				var actWindow = window;
				frame = actWindow.frameElement;
				while (frame!=null)
				{
					var cmsTable = actWindow.document.getElementById("aspTableTableContents");
					if(cmsTable==null) break;
					frame.height = cmsTable.clientHeight+80;
					
					if(document.all) actWindow = frame.document.parentWindow;
					else actWindow=window.parent;
					
					frame = actWindow.frameElement;
				}
			}
		}
	}
	var lastAhrefForDependantCmsTables = null;
	var tmpSelectedCmsSubsheet = null;
	function selectDependantTable (row_id, table_id, table_name, table_title, value_column, value_for_ref)
	{
		//Hide the dependent tables selection dialog 
		var tblSelection = Obj("tblDependantCmsTableSelection");
		if(tblSelection!=null && tblSelection.style.display=="")
				tblSelection.style.display = "none";
		
		var contentsFrame = getTopContentsFrame();
		
		var iWin = getTopWindow ();// ( contentsFrame.contentWindow ? contentsFrame.contentWindow : contentsFrame);
		if (!String (iWin.src).startsWith ("cms.aspx"))
		{
			iWin = ( contentsFrame.contentWindow ? contentsFrame.contentWindow : contentsFrame);
		}
		
		/*if (!contentsFrame) 
		{
			contentsFrame = getTopWindow ();
		}*/
		
		/*{
			iWin = contentsFrame = window;
		}*/
		
		
		
		var depRow = Obj("dependant_row_" + row_id);
		if (!depRow) return;
		//depRow.style.display = "";
		
		var depCell = Obj("dependant_table_cell_" + row_id);
		if(depCell==null || depCell.childNodes[0]==null) return;
		
		//Iframe
		//var iframe = depCell.childNodes[0];
		
		
		startWaitingAnimation (GetString ("PleaseWait") + " ... " + GetString("OpeningSubsheet"));
		window.currentCmsTableInfo.TaskIcon =  ( $("currentCmsTaskIcon") ? $("currentCmsTaskIcon").src : null);
		iWin.openDependentCmsTable (row_id, table_name, table_id, table_title, value_column, value_for_ref, 
			window.currentCmsTableInfo);
		
		return;
		
		
		
		
		tmpSelectedCmsSubsheet = new Array();		
		tmpSelectedCmsSubsheet["table_id"] = table_id;
		tmpSelectedCmsSubsheet["value_for_ref"] = value_for_ref;
		tmpSelectedCmsSubsheet["table_name"] = table_name;
		tmpSelectedCmsSubsheet["table_title"] = table_title;
		tmpSelectedCmsSubsheet["value_column"] = value_column;
		
		var tblSelection = Obj("tblDependantCmsTableSelection");
		if(tblSelection!=null && tblSelection.style.display=="")
			 tblSelection.style.display = "none";
		
		var dependantRowHeight = 100;
		var depRow = Obj("dependant_row_" + row_id);
		if(depRow==null) return;
		var ahref = lastAhrefForDependantCmsTables;
		if(ahref==null) return;
		
		//Image and row
		var btnImg = (ahref.childNodes?ahref.childNodes[0]:null);
		if(btnImg!=null)
		{
			
			if(btnImg.innerHTML == "+") //src!=null && btnImg.src.indexOf("plus2.gif")>0) //Is closed
			{
				btnImg.innerHTML = "-";
				//btnImg.src = "images/minus2.gif";
				btnImg.title =GetString("HideX").replace("{0}", table_title);
				if(btnImg.nextSibling!=null)
					btnImg.nextSibling.innerHTML = "&nbsp;" + btnImg.title;
				depRow.style.display = "";
			}	
			else														//Is open
			{
				btnImg.innerHTML = "+";
				//btnImg.src = "images/plus2.gif";
				btnImg.title =GetString("ShowX").replace("{0}", table_title);
				if(dep_tables.length>1)
				{
					btnImg.title = GetString ("ShowSubSheet");
					if(btnImg.nextSibling!=null)
						btnImg.nextSibling.innerHTML = "&nbsp;" + btnImg.title;
					
				}
				depRow.style.display = "none";
			}
		}
		var depCell = Obj("dependant_table_cell_" + row_id);
		if(depCell==null || depCell.childNodes[0]==null) return;
		
		//Iframe
		var iframe = depCell.childNodes[0];
		//if(iframe.style.display=="") return;
		iframe.border = 1;
		iframe.width="100%";
		iframe.height=dependantRowHeight;
		iframe.style.display="";		
		depCell.height=dependantRowHeight+10;
		depRow.height=dependantRowHeight+10;
		
		iframe.src = "cms.aspx?dependant=true&user_id=" + Obj("act_user_id").value +"&hidden_action=list&hidden_table_id=" +  table_id + "&dep_reference_column_name=" + value_column + "&dep_reference_value=" + value_for_ref;		
		//Set the focus to the button again
		//ahref.focus();			
		
	}
	function openDependantTable (row_id, table_id)
	{
		
		Obj("dep_hidden_action").value="list";
		Obj("dep_hidden_table_id").value=table_id;
		//document.write (Obj("dep_cms_table_form").target);
		Obj("dep_cms_table_form").submit();
	}
	
	
	/** Searching for items in reference lists **/
	var listSearchLetters = "";	
	var listSearchRange = null;
	function resetListSearch()
	{
		listSearchLetters = "";
	}
	function scrollToLetter(e,div)
	{
		var code = e.keyCode;
		if(code==8)
		{
			listSearchLetters= listSearchLetters.substr(0,listSearchLetters.length-1);
			return;
		}
			
		var ch = String.fromCharCode(code);
		listSearchLetters+=ch;
		div.firstChild.rows[0].firstChild.innerHTML = "Auswahlliste: " + listSearchLetters;
		
		var div2 = div.firstChild.nextSibling;
		var tbl = div2.firstChild;
		
		for(var r=0; r < tbl.rows.length; r++)
		{
			var td = tbl.rows[r].firstChild;
			var txt = td.firstChild.innerText.toLowerCase();
			
			if(txt.indexOf(listSearchLetters)==0)
			{
			
				//if(listSearchRange!=null)
				//	listSearchRange.execCommand("BackColor",false,null);
				//listSearchRange = document.selection.createRange();
				//listSearchRange.moveToElementText(td.firstChild);
				//listSearchRange.expand("character");
				//listSearchRange.execCommand("BackColor",false,"yellow");
				if(listSearchRange!=null)
					listSearchRange.firstChild.style.backgroundColor = null;
				listSearchRange = td;
				td.firstChild.style.backgroundColor = "yellow";
				div2.scrollTop=td.offsetTop;
				//td.scrollIntoView();
				div.scrollIntoView();
				return;
			}
		}
		
	}
	function sortReferenceList(inp, name)
	{
		try
		{
			//debugger;
			var div = $("div_" + name);		
			var tbl = div.firstChild.nextSibling.firstChild;
			var arr = new Array();
			var row0 = tbl.rows[0];
			for(var r=1; r < tbl.rows.length; r++)
			{
				var td = tbl.rows[r].firstChild;
				var txt = td.firstChild.innerText;
				arr[r-1] = tbl.rows[r];
			}
			
			if (inp.src.indexOf("_asc.")>0)
			{
				inp.src = "images/menu/cm_sort_desc.gif";
				inp.title = GetString("DescendingSorting");
				arr.sort();
			}
			else
			{
				inp.src = "images/menu/cm_sort_asc.gif";
				inp.title = GetString("AscendingSorting");
				arr.sort(sortReferceListItems);
				arr.reverse();
			}
			for (var r=tbl.rows.length-1; r>0; r--)
			{
				//tbl.deleteRow (r);
			}
			for (var r=0; r < arr.length; r++)
			{
				var tr = arr[r];
				tr.parentNode.moveRow(tr.rowIndex, r+1);
				
			}
			
		}
		catch (err)
		{
			return false;
		}
		return false;
	}
	function sortReferceListItems(tr1,tr2)
	{
		var txt1 = (tr1.cells!=null && tr1.cells[0]!=null? tr1.cells[0].innerText: ""); txt1 = txt1.toLowerCase();
		txt1 = txt1.replace(/ä/ig,"a");
		txt1 = txt1.replace(/ö/ig,"o");
		txt1 = txt1.replace(/ü/ig,"u");
		txt1 = txt1.replace(/ß/ig,"ss");
		
		var txt2 = (tr2.cells!=null && tr2.cells[0]!=null? tr2.cells[0].innerText: ""); txt2 = txt2.toLowerCase();
		
		txt2 = txt2.replace(/ä/ig,"a");
		txt2 = txt2.replace(/ö/ig,"o");
		txt2 = txt2.replace(/ü/ig,"u");
		txt2 = txt2.replace(/ß/ig,"ss");
		
		return (txt1 > txt2?1: txt1==txt2?0:-1);
	}
	function resetSortNFilter()
	{
		if(document.getElementById('hidden_search_filter_string')!=null)
			document.getElementById('hidden_search_filter_string').value="";
		if(document.getElementById('hidden_filter_string')!=null)
			document.getElementById('hidden_filter_string').value="";
		if(document.getElementById('hidden_sort_fields')!=null)
			document.getElementById('hidden_sort_fields').value="";
		if(document.getElementById('table_sort_order')!=null)
			document.getElementById('table_sort_order').value="";
		if(document.getElementById('table_filter_string')!=null)
			document.getElementById('table_filter_string').value="";
	}
	function checkLength(inp,len)
	{
		if(inp==null) return;
		if(inp.value.length>len)
		{
			alert(GetString("FieldInputExceedsMaxValue", new Array (inp.value.length, len)));
			try { 
				inp.focus();
			} catch (err) {}
		}
	}
	var passwordInputFieldsCollection = new Array ();
	//Let the user confirm the changed password
	function confirmPassword(inp)
	{
		if(inp.srcElement)
			inp = inp.srcElement;
		if(inp==null) return;
		if(inp.id==null) inp.id = generateNewGuid();
		inp.confirmed = false;
		//Create a new field of type password:
		//First check, if it already exists		
		var confirmedPassword = $(inp.id + "_confirm");
		if(!confirmedPassword)
		{
			confirmedPassword = document.createElement("INPUT");
			confirmedPassword.style.display = "";
			confirmedPassword.style.visibility = "visible";
			confirmedPassword.type = "password";
			if(inp.width) confirmedPassword.width = inp.width;
			if(inp.height) confirmedPassword.height = inp.height;
			if(inp.length) confirmedPassword.length = inp.length;
			if(inp.maxlength) confirmedPassword.maxlength = inp.maxlength;
			if(inp.size) confirmedPassword.size = inp.size;
			confirmedPassword.id = inp.id + "_confirm";
			if(inp.className) confirmedPassword.className = inp.className;
			//confirmedPassword.style.cssText = inp.style.cssText + ";" + inp.currentStyle.cssText;
		
			confirmedPassword.value = "";
			addEvent(confirmedPassword, "onchange", compareReenteredPassword);
			var confirmTitle = document.createTextNode (" " + GetString("Repeat")+": ");
			//Insert 
			inp.parentNode.appendChild (confirmTitle);
			inp.parentNode.appendChild (confirmedPassword);
		}
		passwordInputFieldsCollection.push(confirmedPassword);
		confirmedPassword.setAttribute("originalPassword", inp.value);
		//Set focus
		setFocus(confirmedPassword);
		
	}
	function compareReenteredPassword (e)
	{
			
		var confirmedPasswordInput = getEventSource(e);
		if(!confirmedPasswordInput) return;
		var originalPassword = confirmedPasswordInput.getAttribute("originalPassword");
		if(isNull(originalPassword))return;
		//Save original borders
		var borderCss = getObjectBorderCssText(confirmedPasswordInput);
		
		if(borderCss && !confirmedPasswordInput.getAttribute("origBorderCss")) confirmedPasswordInput.setAttribute("origBorderCss",borderCss);
		
		if(originalPassword!=confirmedPasswordInput.value)
		{
			
			confirmedPasswordInput.style.border = "1px solid red";
			alert(GetString ("Warning_PasswordConfirmationFailure"));
			var origInput = confirmedPasswordInput.id;
			if(origInput)origInput  = $(String(origInput).substr (0, String(origInput).length-8));
			if(origInput) 
			{
				setFocus(origInput);//Set focus to the original field, not the "reentered" field!
			}
			//Stop waiting animation 
			if (window.stopWaitingAnimation) window.stopWaitingAnimation ("Vorgang abgebrochen");
			return false;
		}
		else
		{
			if(confirmedPasswordInput.getAttribute ("origBorderCss"))
			{
				confirmedPasswordInput.style.cssText += ";" + confirmedPasswordInput.getAttribute ("origBorderCss");
				if(confirmedPasswordInput.currentStyle.borderLeftStyle=="none")
					confirmedPasswordInput.style.border = "solid 1px gray";
					
			}
			else 
				confirmedPasswordInput.style.removeAttribute("border");
			
		}
		
	}
	function checkFormInput ()
	{
		//Set new action
		var form = Obj("actions");
		var newURL = document.location.href;
		var newSession = "session="+ generateNewGuid2();
		if (newURL.indexOf ("session") == -1)
			newURL+="&" + newSession
		else 
			newURL = newURL.replace (/session=[0-9a-z]{32}/gi, newSession);
		form.action = newURL;
		
		if(!passwordInputFieldsCollection) return true;
		for (var i=passwordInputFieldsCollection.length-1; i >=0; i--)
		{
			var inp = passwordInputFieldsCollection[i];
			var originalPassword = inp.getAttribute("originalPassword");
			if(isNull(originalPassword))continue;
			
			//Save original borders
			var borderCss = getObjectBorderCssText(inp);
			if(borderCss && !inp.getAttribute("origBorderCss")) inp.setAttribute("origBorderCss",borderCss);
				
				
			if(originalPassword!=inp.value)
			{
				inp.style.border = "1px solid red";
				alert(GetString ("Warning_PasswordConfirmationFailure"));
				var origInput = inp.id;
				if(origInput)origInput  = $(String(origInput).substr (0, String(origInput).length-8));
				if(origInput) 
					setFocus(origInput);//Set focus to the original field, not the "reentered" field!
				
				//Stop waiting animation 
				if (window.stopWaitingAnimation) window.stopWaitingAnimation ("Vorgang abgebrochen");
				return false;
			}
			else
			{
				passwordInputFieldsCollection.splice(i,1);
					
				if(inp.getAttribute ("origBorderCss"))
				{
					inp.style.cssText += ";" + inp.getAttribute ("origBorderCss");
					if(inp.currentStyle.borderLeftStyle=="none")
						inp.style.border = "solid 1px gray";
				}
				else 
					inp.style.removeAttribute("border");
				return true;
			}
		}
		return true;
	}
	function addHtmlEditorOptionsButton()
	{
		var inputs = document.getElementsByTagName("TEXTAREA");
		for (var i=0; i<inputs.length; i++)
		{
			var inp = inputs[i];
			
			if((inp.style!=null && inp.style.display=="none") || inp.id==null || inp.id.indexOf("input_element_size")==-1)continue;
			//Reduce width
			var curWidth = getObjectWidth (inp);
			inp.style.width = curWidth-30;
			inp.style.verticalAlign = "top";
			
			//Add button
			var btn = document.createElement("INPUT");
			btn.type = "button";
			btn.className = "default_button";
			btn.style.cssText = "padding: 0px 0px 0px 0px;width: 27px;margin-left:3px;";
			
			btn.value = "...";
			btn.title = "HtmlEditor konfigurieren";
			inp.parentNode.appendChild(btn);
			
			btn.setAttribute("input_id", inp.id);
			addEvent(btn,"onclick", modifyHtmlEditorOptions);
		}
	}
	var textAreaWithHtmlEditorOptions = null;
	function modifyHtmlEditorOptions(e)
	{
		var btn = getEventSource(e);
		if(!btn)return;
		var input_id = btn.getAttribute("input_id");
		var input = $(input_id);
		
		textAreaWithHtmlEditorOptions = input;
		res = openModalWindow(getVirtualPath() + 'htmleditor/htmleditor_buttons_selection.htm',700,600,
		input.value, function (settings)
		{
			//Check settings
			if(settings==null) settings = "";
			if(!isEmpty(settings) && settings.indexOf("htmleditor")==-1)
				settings = "htmleditor:yes;"+ settings;
				
			if(textAreaWithHtmlEditorOptions==null)return;
			textAreaWithHtmlEditorOptions.value = settings;
		});
	}
	function EditUserProfile ()
	{
		
		if(!userInfo || !userInfo.UserIndex) return;
		var virtualPath = getVirtualPath ();
		
		var win = window.open (virtualPath + "wizards/profile.aspx", "UserProfile" + userInfo.UserIndex.replace(/-/ig,""),
			"width=600,height=535,resizable=yes,scrollbars=yes");
		win.focus();
	}
	
	function UpdateUserProfile (userInfoForm)
	{
		if(!userInfo || !userInfoForm) return;
		userInfo.Firstname = userInfoForm.FirstName;
		userInfo.Lastname = userInfoForm.LastName;
		
		userInfo.FullInfo = 
			(userInfo.Title && Trim(userInfo.Title)!=""?userInfo.Title+ " ":"") +
			(userInfo.Firstname?userInfo.Firstname+ " ":"") + 
			userInfo.Lastname;
		
		userInfo.FullName = 
			(userInfo.Firstname?userInfo.Firstname+ " ":"") + 
			userInfo.Lastname;
			
		var hospitalInfo = (userInfo.Hospital?userInfo.Hospital + ", ":"") + 
			(userInfo.Department?userInfo.Department:"");
		if(hospitalInfo)
			userInfo.FullInfo+=
			" (" + 
				hospitalInfo + 
			")";
		
		//Old solution 
		if($("aspLabelTitle"))
			$("aspLabelTitle").innerHTML = userInfo.FullInfo;
			
		//New solution 
		if ($("accountInfo_UserFullName"))
			$("accountInfo_UserFullName").innerHTML = userInfo.FullName;
	}
	
	
function checkLoginName (inputField, userGuid)
{
	if(isEmpty(inputField.value))
	{
		
		alert(GetString ("PleaseSpecifyALoginName"));
		inputField.focus();
		return false;
	}
	else
	{
		var tmpLoginName = inputField.value;
		
		//Check uniqueness 
		var checkResponse = Communicator.GetPlainText ("POST", getVirtualPath () +"mainService.aspx?action=checkLogin&id=" + userGuid + "&login=" + tmpLoginName, "");
		if (checkResponse!="true")
		{
			alert(GetString ("Warning_LoginNameIsInUse", [tmpLoginName+"_1"]));
			inputField.select();
		}
		return true;
	}
}	
