//
// 07.05.2002 RZNN Funktion popuphelp(fileName) hinzugefügt
// 14.04.2003 RZSS Funktionen isPageLoaded, isNotDoubleClick hinzugefügt
// 15.04.2003 RZNN Funktion openWindow() hinzugefügt
// 11.09.2002 RZSS Funktion openPrintWindow
// 05.12.2003 RZSS Funktion checkBox
// 23.02.2004 RZNN Bei openWindow nur focus setzen, wenn noch nicht closed
// 02.03.2004 RZSS chkZahl, chkKommaZahl: Vorzeichen - erlaubt, Leerzeichen nicht mehr erlaubt
// 04.03.2004 RZSS Neue Funktion chkTime
// 16.11.2004 RZSS timeoutAbfrage
// 16.04.2009 RZSS Ajax-Funktionen
// 03.03.2010 RZNN Funktion insert zum Einfügen von Zeichen in einem Inputfield an der Cursorposition (wird für Diakritische Zeichen verwendet)
//


var timeoutMsg="";
var timeoutBtn=false;
function timeoutAbfrage(msg,btn,time) {
	timeoutMsg=msg;
	timeoutBtn=btn;
	setTimeout('privateTimeoutAbfrage()',time);
}
function privateTimeoutAbfrage() {
	if (confirm(timeoutMsg))
		timeoutBtn.click();
}

var pageLoaded=false;
function isPageLoaded(msg) {
	if (pageLoaded)
		return true;
	else {
		if (msg!="")
			alert(msg);
		return false;
	}
}

var submitCount=0;
function isNotDoubleSubmit(msg) {
	if (submitCount>0) {
		if (msg!="")
			alert(msg);
		return false;
	}
	submitCount=submitCount+1;
	return true;
}
function decreaseSubmitCount() {
	if (submitCount==0)
		submitCount=submitCount-1;
}
function isDoubleSubmitMenu(msg) {
	field=document.getElementById("frwSubmitCount");
	if (field==null)
		return false;
	count=field.value;
	if (count>0) {
		if (msg!="")
			alert(msg);
		return true;
	}
	field.value=1;	
	return false;
}
function decreaseSubmitMenu() {
	if (parent.Menu==null)
		return;
	field=parent.Menu.document.getElementById("frwSubmitCount");
	if (field!=null)
		field.value=0;	
}
var flag=0;
function chkCancel(msg)
{
	if (flag==1) {
		submitCount=-1;
		event.returnValue=msg;
	}
}
function enterKey(btn) 
{
	if (window.event.keyCode==13) {
		window.event.keyCode=0;
		try {
			btn.click();
		} catch (exception) {
			;  //Fehler kann z.B. durch Abbruch nach chkCancel entstehen.
		}
	}
}
function enterKeyEvent(e,btn) 
{
	if (e.keyCode==13) {
		try {
			btn.click();
		} catch (exception) {
			;  //Fehler kann z.B. durch Abbruch nach chkCancel entstehen.
		}
		return false;
	}
	return true;
}

function chkTime(inString)
{
	var hour=0;
	var min=0;
	var sec=0;
	if (inString=="") return true;
	if (inString.indexOf(":")<0) {   //ohne Trennzeichen
		if ((inString.length!=4) && (inString.length!=6))
			return false;
		for (i=0;i<inString.length;i++) {
			if (isNaN(inString.charAt(i)) || inString.charAt(i)==" ") 
				return false;
		}
		hour=parseInt(inString.substring(0,2));
		min=parseInt(inString.substring(2,4));
		if (inString.length==6)
			sec=parseInt(inString.substring(4,6));
	} else {			//mit Trennzeichen
		for (i=0;i<inString.length;i++) {
			if ((inString.charAt(i)!=":") && (isNaN(inString.charAt(i)) || inString.charAt(i)==" "))
				return false;
		}
		ind=inString.indexOf(":");
		if (ind<1 || ind >2)
			return false;
		hour=parseInt(inString.substring(0,ind));
		inString=inString.substring(ind+1,inString.length);
		ind=inString.indexOf(":");
		if (ind>0) {		//mit Sekunden
			if (ind<1 || ind >2)
				return false;
			min=parseInt(inString.substring(0,ind));
			inString=inString.substring(ind+1,inString.length);
			if (inString.length<1 || inString.length >2)
				return false;
			sec=parseInt(inString);
		} else {		//ohne Sekunden
			if (inString.length<1 || inString.length >2)
				return false;
			min=parseInt(inString);
		}
	}
	if (hour<0 || hour>23)
		return false;
	if (min<0 || min>59)
		return false;
	if (sec<0 || sec>59)
		return false;
	return true;
}

function chkDate(inString)
{
	var day=0;
	var month=0;
	var year=0;
	inString=trim(inString);
	if (inString=="") return true;
	var sep = "";
	for (i=0;i<inString.length;i++) {
		var z=inString.substring(i,i+1);
		if (z!=' ') {
			if (isNaN(parseInt(z))) {
				sep=z;
				break;
			}
		}
	}
	if (sep=='')
		sep=" ";
	var s = trim(inString.substring(0, inString.indexOf(sep)));
	if (s.length > 2)
		return false;
	for (i=0;i<s.length;i++) {
		temp=parseInt(s.substring(i,i+1));
		if (isNaN(temp)) return false;
	 	day=day*10+temp;
	}
	inString = inString.substring(inString.indexOf(sep) + 1, inString.length);
	var s = trim(inString.substring(0, inString.indexOf(sep)));
	if (s.length > 2)
		return false;
	for (i=0;i<s.length;i++) {
		temp=parseInt(s.substring(i,i+1));
		if (isNaN(temp)) return false;
		month=month*10+temp;
	}
	var s = trim(inString.substring(inString.indexOf(sep)+1,inString.length));
	if ((s.length > 2) & (s.length != 4))
		return false;
	for (i=0;i<s.length;i++) {
		temp=parseInt(s.substring(i,i+1));
		if (isNaN(temp)) return false;
		year=year*10+temp;
	}
	if ((year > 9999) || ((year > 100) & (year < 1000))) 
		return false;
	if ((year >= 0) & (year < 100))
		year = year+2000;
	var date=new Date(year,month-1,day);
	if ((date.getDate()!=day) || 
	   (date.getMonth()!=(month-1)))
		return false;
	return true;
}

function chkZahl(inString) {
	var i=0;
	if (inString.length>1 && inString.charAt(0)=="-")
		i=1;
	while (i < inString.length){
		if (isNaN(inString.charAt(i)) || inString.charAt(i)==" ") return false;
		i++;
	}
	return true;
}

function chkKommaZahl(inString) {
	var dot=0;
	var sign=0;
	var i=0;
	if (inString.length>1 && inString.charAt(0)=="-")
		i=1;
	while (i < inString.length) {
		if (inString.charAt(i) == "." || inString.charAt(i) == ",") dot++;
		else if (isNaN(inString.charAt(i)) || inString.charAt(i)==" ") return false;
	        i++;
	}
	return (dot<2);
}

function abfrage(abfrageText) {
	return confirm(abfrageText);
}

function trim(str)
{
	var len = str.length;
	var st = 0;

	while ((st < len) && (str.charAt(st) <= " "))
	    st++;
	while ((st < len) && (str.charAt(len - 1) <= " "))
	    len--;
	return ((st > 0) || (len < str.length)) ? str.substr(st, len - st) : str;
}

function checkRadioButton(feld)
{
	for (i=0;i<feld.length;i++) 
	{
		if (feld[i].checked) 
			return true;
	}
	return false
}

function popuphelp(fileName) {
	openWindow(fileName, 'Info',350,250);
}
var url=""
function progressWindow(temp) {
	url=temp;
	window.setTimeout('openWindow(url,"Progress",400,150);',300);
}

function openWindow(fileName,title,w,h) {
	x = ((screen.width)-w)/2;
	y = ((screen.height)-h)/3;
	win=window.open(fileName, title, "width=" + w + ", height="+ h + ", top=" + y + ", left=" + x + ", screenX=" + x + ", screenY=" + y + ", locationbar=no, resizable=no, scrollbars=yes, status=no, menubar=no");
	if (!win.closed)
		win.focus();
	return win;
}
var printWindow;
function openPrintWindow(url,w,h){
	printWindow=openWindow(url,'Drucken',w,h);
	printWindow.print();
	setTimeout("printWindow.close()",5000);
}
function checkBox(form,fieldName,b1,b2) {
	checkBoxStart(form,fieldName,b1,b2,0);
}
function checkBoxStart(form,fieldName,b1,b2,startValue) {
	for (i=0;i<form.elements.length;i++) {
		if (form.elements[i].name!=null && form.elements[i].name.indexOf(fieldName)==0) {
			zahl=form.elements[i].name.substring(fieldName.length,form.elements[i].name.length);
			if (chkZahl(zahl) && zahl>=startValue)
				form.elements[i].checked=(!form.elements[i].checked || b1) && b2;		
		}
	}
}

function GetXmlHttpRequest() {
	var xmlHttp = null;
	// Mozilla, Opera, Safari sowie Internet Explorer (ab v7)
	if (typeof XMLHttpRequest != 'undefined') {
	    xmlHttp = new XMLHttpRequest();
	}
	if (!xmlHttp) {
	    // Internet Explorer 6 und älter
	    try {
	        xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
	    } catch(e) {
	        try {
	            xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
	        } catch(e) {
	            xmlHttp  = null;
	        }
	    }
	}
	return xmlHttp;
}

function doAjax(action, buttonName,divName) {
	return doAjaxV2(action,buttonName,divName,null);
}

function doAjaxV2(action, buttonName,divName,textAnzeige) {
	var xmlHttp=GetXmlHttpRequest();
	var ret=true;
   	var checkString="<!--frwAjax=true--!>";	

	if (xmlHttp) {
		if (textAnzeige!=null) {
   	   		document.getElementById(divName).innerHTML=textAnzeige+document.getElementById(divName).innerHTML;
		}
		if (action.indexOf("?")>0) {
			action=action+"&";
		} else {
			action=action+"?";
		}
		action=action+'frwAjax=true&dummy='+new Date().getTime()+'&'+buttonName+'=true';
	    xmlHttp.open('GET', action, true);
	    xmlHttp.onreadystatechange = function () {
	        if (xmlHttp.readyState == 4) {
	        	if ((xmlHttp.responseText.length-checkString.length)==xmlHttp.responseText.lastIndexOf(checkString)) {
	        		if (document.getElementById(divName) != null) {
		            	document.getElementById(divName).innerHTML=xmlHttp.responseText;
	        		}
		        } else { 
					btn=document.getElementById('frwAjaxButton');
					if (btn!=null) {
						btn.name=buttonName;
						btn.click();
					}
		        }
	        }
	    };
	    xmlHttp.send(null);
	    return true;
	}
	else {
		return false;
	}
}

function doAjaxJquery(action, buttonName, divName, textAnzeige, _data, focus2FirstInputElement) {
	//console.log('doAjaxJquery - start');
	
	var checkString="<!--frwAjax=true--!>";
	
	if (textAnzeige!=null) {
	   		$('#' + divName).html(textAnzeige+$('#' + divName).html());
	}
	if (action.indexOf("?")>0) {
		action=action+"&";
	} else {
		action=action+"?";
	}
	action=action+'frwAjax=true&dummy='+new Date().getTime()+'&'+buttonName+'=true';
	
	$.ajax({
		type:"POST",
		async:false,
		url:action,
		data: _data,
		success:function(data) { 
			//console.log('doAjaxJquery - antwort auf ajax-request erhalten');
	    	if ((data.length-checkString.length)==data.lastIndexOf(checkString)) {
	    		if (document.getElementById(divName) != null) {
	            	//document.getElementById(divName).innerHTML=data;
	    			$('#' + divName).html(data);
	            	if (focus2FirstInputElement==true) {
	            		//setFocus2FirstInputElement(divName);
	            		window.setTimeout('setFocus2FirstInputElement("' + divName + '");', 10); //leicht zeitverzögert den Fokus setzen, damit der Browser (IE scheint hier problematisch zu sein) sein DOM aktualisiert hat
	            	}
	    		}
	    	}
	    	else {
	    		//console.log('doAjaxJquery - antwort nicht ok --> button klicken');
				btn=$('#frwAjaxButton');
				if (btn.length>0) {
					btn=btn[0];
					btn.name=buttonName;
					btn.click();
				}		
			}
		},
		error:function() {
			//bewusst nichts tun
		}
	});		
	
	//console.log('doAjaxJquery - ende');
	
	return true;
}

/**
 * Setzt den Fokus auf das erste Steuerelement innerhalb des Div.
 * @param idDiv
 * @return
 */
function setFocus2FirstInputElement(idDiv) {
	 //console.log('setFocus2FirstInputElement');
	 
	var eltSelect=$('#' + idDiv + ' select:first');
	if (eltSelect.length>0) {
		//eltSelect.focus();
		eltSelect[0].focus();
	}
	else {
		eltSelect=$('#' + idDiv + ' input:first');
		if (eltSelect.length>0) {
			//eltSelect.focus();
			eltSelect[0].focus();
		}
		else {
			eltSelect=$('#' + idDiv + ' textarea:first');
			if (eltSelect.length>0) {
				//eltSelect.focus();
				eltSelect[0].focus();
			}
		}
	}
}

function insert(aForm,aField, aTag, eTag) {
	  //var input = document.forms[aForm].elements[aField];
	  var input;
	  if (aForm=='')
		  input = document.getElementsByName(aField)[0];
	  else
		  input = document.getElementsByName(aForm)[0].elements[aField];
	  input.focus();
	  /* für Internet Explorer */
	  if(typeof document.selection != 'undefined') {
	    /* Einfügen des Formatierungscodes */
	    var range = document.selection.createRange();
	    var insText = range.text;
	    range.text = aTag + insText + eTag;
	    /* Anpassen der Cursorposition */
	    range = document.selection.createRange();
	    if (insText.length == 0) {
	      range.move('character', -eTag.length);
	    } else {
	      range.moveStart('character', aTag.length + insText.length + eTag.length);      
	    }
	    range.select();
	  }
	  /* für neuere auf Gecko basierende Browser */
	  else if(typeof input.selectionStart != 'undefined')
	  {
	    /* Einfügen des Formatierungscodes */
	    var start = input.selectionStart;
	    var end = input.selectionEnd;
	    var insText = input.value.substring(start, end);
	    input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
	    /* Anpassen der Cursorposition */
	    var pos;
	    if (insText.length == 0) {
	      pos = start + aTag.length;
	    } else {
	      pos = start + aTag.length + insText.length + eTag.length;
	    }
	    input.selectionStart = pos;
	    input.selectionEnd = pos;
	  }
	  /* für die übrigen Browser */
	  else
	  {
	    /* Abfrage der Einfügeposition */
	    var pos;
	    var re = new RegExp('^[0-9]{0,3}$');
	    while(!re.test(pos)) {
	      pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
	    }
	    if(pos > input.value.length) {
	      pos = input.value.length;
	    }
	    /* Einfügen des Formatierungscodes */
	    var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
	    input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
	  }
	}

function clickLink(linkObj) {
	if (linkObj) {
		var action=true;
		if (linkObj.getAttribute('onClick')!=null) {
			var ret=linkObj.onclick();
			if (ret==null)
				action=true;
			else
				action=ret;
		}
		if (action)	
			window.open(linkObj.href,linkObj.target,'');
	}
}

