var strFeldListe="";
var strMeldungListe="";
var bIE = true;
var bMandatory=false;
var bAllFieldsOK=true;
var bFirstField=true;
var strFocus='';

var today = new Date;
var aDay;
var aMonth;
var aYear;
var sDateFormat = "DMY";
var sDateSeperator = ".";


if  (navigator.appName == "Netscape") bIE = false;

function trim(s) {
	while (s.substring(0,1) == ' ') {
		s = s.substring(1,s.length);
	}
	while (s.substring(s.length-1,s.length) == ' ') {
		s = s.substring(0,s.length-1);
	}
	return s;
}


// Funktion wurde erweitert, um Strings zu trimmen KJA, 18.01.2008
function checkMandatory(ctrName) 
{
	if (ctrName.type != "select-multiple")
	{
		if (ctrName.type == "select-one")
		{
			for (i=0; i < ctrName.length; i++){
				if (ctrName.options[i].selected == true){
					if (trim(ctrName.options[i].value) != "") {bMandatory = true;}
					else{bMandatory = false;}
					break;
				}
				else{bMandatory = false;}
			}
		}
		else {
			if (trim(ctrName.value) == "") {	
				bMandatory = false;
			}
			else { 
				bMandatory = true;
			}
		}
	}
	else{
		if (ctrName.name != "BranchePF") {
			if (ctrName.length == 0) {	
				bMandatory = false;
			}
			else { 
				bMandatory = true;
			}
		}
		else{
			if (document.forms[0].chkAlleBranchen.checked == true){bMandatory = true;}
			else{
				for (i=0; i < ctrName.length; i++){
					if (ctrName.options[i].selected == true){bMandatory = true; break;}
					else{bMandatory = false;}
				}
			}
		}
	}
	
	changeVisual(ctrName,bMandatory)
	if (bMandatory==false) 
	{
	    if (bFirstField==true) 
	    {
	        strFocus=ctrName; 
	        bFirstField=false;
	    }
	}
	return bMandatory;
} // checkMandatory

function checkNumeric(ctrName) {	
	var bOK=false;
	bOK=IstGanzzahl(ctrName.value);
	changeVisual(ctrName,bOK);
	if (bOK==false) {if (bFirstField==true) {strFocus=ctrName; bFirstField=false;}}
	return bOK;
}

function IstGanzzahl(s){n='1234567890';for(var i=0;i<s.length;i++)if((n.indexOf(s.charAt(i))==-1))return false;return true;}

// Farbliche Anpassung der Formularfelder bei falscher oder leerer Eingabe
function changeVisual(ctrName,bGood)	
{		  	
	//alert('ctrName.type: '+ ctrName.type);
	//alert('ctrName.name: '+ ctrName.name + ' ' + bGood);
	
	if (bGood == false) 
	{		
		//ctrName.style.borderColor="#00ff66";  ToDo RSE Nachrüsten einer Unterscheidung nach Koops
		ctrName.style.borderWidth="2px";
		ctrName.style.borderColor="#DF0000";
		ctrName.style.borderStyle="double";
	}	
	else 
	{
		ctrName.style.borderTopWidth="2px";
		ctrName.style.borderLeftWidth="2px";
		ctrName.style.borderRightWidth="1px";
		ctrName.style.borderBottomWidth="1px";
		ctrName.style.borderColor="#D4D0C8";
		ctrName.style.borderStyle="inset";
	}				
} // changeVisual

function SetFaultField(ctrName) {
	changeVisual(ctrName,false);
	if (bFirstField==true) {strFocus=ctrName; bFirstField=false;}
	bAllFieldsOK=false;
}

function AddMandatoryFeld(strFeld) {
	if (strFeldListe!='') {
		strFeldListe=strFeldListe+"&";
	}
	strFeldListe=strFeldListe+"F="+strFeld;
	return true;
}

function AddMeldung(strMeldung) {
	if (strMeldungListe!='') {
		strMeldungListe=strMeldungListe+"&";
	}
	strMeldungListe=strMeldungListe+"M="+strMeldung;
	return true;
}

function checkPassword(ctrPW) {
	var sValue;		
	bPassword1 = false;
	if (ctrPW.value != null) {
		sValue = ctrPW.value;
		if (sValue.length >= 8) {
			bPassword1 = true;
		}
	}
	changeVisual(ctrPW,bPassword1);
	return bPassword1;
} 

function checkPasswordVerify(ctrPW1,ctrPW2) {
	var sValue;		
	bPassword2 = false;
	if (ctrPW2.value != null) {
		sValue = ctrPW2.value;
		if (sValue == ctrPW1.value) {
			bPassword2 = true;
		}
	}
  changeVisual(ctrPW2,bPassword2);
  return bPassword2;
} 


function CheckEmail(ctrEmail) {
	var Email = new String();
	var bEmail=false;
	
	if (ctrEmail == null) { return false; }
	Email = ctrEmail.value;	
	if (Email == "") { return false; }
	if (Email.indexOf('@') == -1) { return false; } // es muss ein @ drin sein
	else
	{
		var atsign = Email.substring(0,Email.lastIndexOf('@'));
		var domain = Email.substring(atsign.length+1,Email.length);
		if (atsign=="") { return false; }
		if (domain=="") { return false; }
		if (domain.indexOf('.') == 0) { return false; }
		if (Email.indexOf('.') == -1) { return false; }
		else
		{
			var subdomain = Email.substring(atsign.length+1,Email.lastIndexOf('.'));
			if ((subdomain.length < 2)) { return false; }
			var country = domain.substring(subdomain.length+1,domain.length);
			if ((country.length < 2)) { return false; }
			if (subdomain.indexOf('.')!=-1) {
				var nLast=subdomain.lastIndexOf('.')+1;
				var topleveldomain= subdomain.substr(nLast,subdomain.length);
				if (topleveldomain.length<2) { return false; }
			}
		}
	}
	if (Email.indexOf('@') != Email.lastIndexOf('@')) { return false; } // nur 1 @ drin!
	if (Email.indexOf('Ü') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf('Ö') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf('Ä') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf('ß') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf('ü') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf('ö') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf('ä') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf(',') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf(';') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf('&') != -1) { return false; } // es darf kein Ü drin sein
	// if (Email.indexOf('+') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf('/') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf('\\') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf('?') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf('(') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf(')') != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf("'") != -1) { return false; } // es darf kein Ü drin sein
	if (Email.indexOf(" ") != -1) { return false; } // es darf kein Ü drin sein
} 

function validateEmail(ctrEmail) {
	var bEmail= false;
	bEmail = checkEMailByRegExp(ctrEmail.value);
	changeVisual(ctrEmail,bEmail);
	return bEmail;
}

function checkEMailByRegExp(src) {
	var RetValue = false;
	var i=0;

	emailReg="^[a-zA-Z0-9_\\-\\.\\&]+\@([a-zA-Z0-9_\\-\\.]+\\.)[a-zA-Z]{2,4}$"


	var regex = new RegExp(emailReg);
	RetValue = regex.test(src);	

//  alert('src = ' + src + 'Returns ' + RetValue)
	return RetValue;	
	}

function checkDateIntern(aDay, aMonth, aYear)
{
  var daysInMonth = new Array(12);
  daysInMonth[1] = 31;
  daysInMonth[2] = 29;   // must programmatically check this
  daysInMonth[3] = 31;
  daysInMonth[4] = 30;
  daysInMonth[5] = 31;
  daysInMonth[6] = 30;
  daysInMonth[7] = 31;
  daysInMonth[8] = 31;
  daysInMonth[9] = 30;
  daysInMonth[10] = 31;
  daysInMonth[11] = 30;
  daysInMonth[12] = 31;
    if (!((aDay >= 1 && aDay <= 31) && (aMonth >= 1 && aMonth <= 12) && (aYear >= 1900 && aYear <= 2100))) 
		return false;
    if (aDay > daysInMonth[aMonth]) 
		return false; 
    var daysInFebruary = ((aYear % 4 == 0) && ( (!(aYear % 100 == 0)) || (aYear % 400 == 0) ) ) ? 29 : 28;
    if ((aMonth == 2) && (aDay > daysInFebruary)) 
		return false;
    return true;
}

function formatDate(aDay,aMonth,aYear,sFormat,sSeperator) {

	if (sFormat != "DMY" && sFormat != "MDY")
		return false;
	
	sFormat = sFormat.substring(0,1) + sSeperator + sFormat.substring(1,2) + sSeperator + sFormat.substring(2,3);
	
	var sDate = new String(sFormat);

	var sDay = new String(parseFloat(aDay) + 100);
	sDay = sDay.substring(1,3);
	var sMonth = new String(parseFloat(aMonth) + 100);
	sMonth = sMonth.substring(1,3);

	sDate = sDate.replace("D",sDay);
	sDate = sDate.replace("M",sMonth);
	sDate = sDate.replace("Y",aYear);
	
	return sDate;
}

function CheckDate(ctlDate)
{
	if (ctlDate.value == "") {
		aDay = parseFloat(today.getDate());
		aMonth = parseFloat(today.getMonth())+1;
		aYear = parseFloat(today.getYear());
		 if (aYear<50)
			aYear = aYear + 2000;
		 else if (aYear<100)
			aYear = aYear + 1900;
	}
	else
	{
		myDate = ctlDate.value.split("."); //first check European input format
		aDay = parseFloat(myDate[0]);
		aMonth = parseFloat(myDate[1]);
		aYear = parseFloat(myDate[2]);
		 if (aYear<50)
			aYear = aYear + 2000;
		 else if (aYear<100)
			aYear = aYear + 1900;
			
			
		if (!checkDateIntern(aDay, aMonth, aYear)) {
			myDate = ctlDate.value.split("/"); //if not valid, check US input format
			aMonth = parseFloat(myDate[0]);
			aDay = parseFloat(myDate[1]);
			aYear = parseFloat(myDate[2]);
			 if (aYear<50)
				aYear = aYear + 2000;
			 else if (aYear<100)
				aYear = aYear + 1900;
			 if (!checkDateIntern(aDay, aMonth, aYear)) {
				//ctlDate.value = "";
				//ctlDate.focus();
				changeVisual(ctlDate,false);
				if (bFirstField==true) {strFocus=ctlDate; bFirstField=false;};
				return false
			}
		}
	
	for(i=0;i<aDay.length;i++){
		if(isNaN(aDay.substring(i,i+1))){
			sDate=false;
		}
	}

	for(i=0;i<aMonth.length;i++){
		if(isNaN(aMonth.substring(i,i+1))){
			sDate=false;
		}
	}
	
	for(i=0;i<aYear.length;i++){
		if(isNaN(aYear.substring(i,i+1))){
			sDate=false;
		}
	}
	sDate = formatDate(aDay,aMonth,aYear,sDateFormat,sDateSeperator);
	
	if (sDate == false){
		return false
	}
	
	ctlDate.value = sDate;

	}

	return true;

}

function HelpOpen(strUrl) {
	/*Auskommentiert, wegen Probleme bei Koops, KJA, 15.06.2007
	  if (parent.helpwindow != null) {
		if (parent.helpwindow.closed == false) { 
			parent.helpwindow.close();				
			parent.helpwindow = null;
		}
	}*/
	var w = 400;
	var h = 400;
	LeftPosition = (screen.width-w)/2;
	TopPosition = (screen.height-h)/2;
	return window.open(strUrl, "myWindow","status=false,resizable=false,scrollbars=1,menubar=false,toolbar=false,width="+ w +",height="+ h +",top="+TopPosition+",left="+LeftPosition+"");
}



/* ************************************************************
Filtert bestimmte Zeichen aus dem String raus
Bzw. machen aus den Zeichen "'", ";", "\" ein Leerzeichen
und aus "--" ein "-".

KJA: 25.07.2005 
***************************************************************/

function ClearString(sString)
{
var sFindExp1 = /;/g;
var sFindExp2 = /'/g;
var sFindExp3 = /\\/g;
var sFindExp4 = /--/g;

var sReplaceExp1 = "";
var sReplaceExp2 = "";
var sReplaceExp3 = "";
var sReplaceExp4 = "-";
var results;

results = sString.replace(sFindExp1, sReplaceExp1);
results = results.replace(sFindExp2, sReplaceExp2);
results = results.replace(sFindExp3, sReplaceExp3);
results = results.replace(sFindExp4, sReplaceExp4);

return results;

}



function str2date(s)
{
	var d, m, y, t, i, n;
	if (!s.match(/^\s*\d+([^\w\s])\d+\1\d+\s*$/))
		return 0;
	t = RegExp.$1;
	s = s.replace(/\b(\d{4}|0+|3[2-9]|[4-9]\d)\b/, '');
	y = RegExp.$1;
	n = s.match(/\d+/g);
	if (y)
	{
		i = (t == '.') ? 0 : 1;
		d = n[i];
		m = n[1 - i];
	}else{
		i = '';
		if (t == '/') i = '2,1,3';
		if (t == '-') i = '3,2,1';
		if (i == '') i = '1,2,3';
		i = i.split(',');
		d = n[i[0]];
		m = n[i[1]];
		y = n[i[2]];
	}
	if (m > 12)
	{
		i = m;
		m = d;
		d = i;
	}
	t = new Date();
	t.setDate(1);
	t.setYear(y);
	t.setMonth(m-1);
	t.setDate(d);
	t.setHours(12);
	return t.getTime();
}

    function validateDateRegEx(date) 
    {
        var regex = /^([0-3]\d|[1-9])\.([0-3]\d|[1-9])\.(\d{4}|\d{2})$/g;
        if(!regex.exec(date)) 
        {
            return false;
        }
        else
        {
            return true;
        }
    }
    
//Funktion für SyntaxCheck einer URL
function checkSyntaxUrl(ctrName)
{
    var controlValue = eval(ctrName).value;
    retValue = false;
    
    //alert(controlValue);
    
    var bitHTTP = controlValue.indexOf("http://");
    var bitWWW = controlValue.indexOf("www."); 
    
    if( (bitHTTP == "-1" ) && (bitWWW == "0") )
    {
        controlValue = "http://"+controlValue;
        var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
        retValue = regexp.test(controlValue);
    }
    else if (bitHTTP == "0")
    {
        var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/
        retValue = regexp.test(controlValue);        
    }
    else
    {
        retValue = false;
    }
    return retValue;
}

// Tooltipp-Infomeldungen bei kleinen Is	
function showWMTT(id) 
{
  wmtt = document.getElementById(id);
  wmtt.style.display = "block"
}

function update() 
{
    document.onmousemove = updateWMTT;
	
	function updateWMTT(e) 
    {
      x = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
      y = (document.all) ? window.event.y + document.body.scrollTop  : e.pageY;
      if (wmtt != null) {
	      wmtt.style.left = (x + 20) + "px";
	      wmtt.style.top 	= (y + 0) + "px";
      }
    }
}



function hideWMTT() 
{
  wmtt.style.display = "none";
}
