function $(){
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string'){
            element = document.getElementById(element);
        }
        if (arguments.length == 1) 
            return element;
        elements.push(element);
    }
    return elements;
}

function copyright(domain){
	var jetzt = new Date();
	var Jahr = jetzt.getYear();
	if (Jahr < 999)	Jahr += 1900;
	document.write("&copy; " + domain + " " + Jahr);
}

function Get_Cookie(name){
	var start = document.cookie.indexOf(name+"=");
	var len = start+name.length+1;
	if ((!start) && (name != document.cookie.substring(0,name.length))) return null;
	if (start == -1) return null;
	var end = document.cookie.indexOf(";",len);
	if (end == -1) end = document.cookie.length;
	return unescape(document.cookie.substring(len,end));
}

function Set_Cookie(name,value,expires,path,domain,secure){
	var cookieString = name + "=" +escape(value) +
		( (expires) ? ";expires=" + expires.toGMTString() : "") +
		( (path) ? ";path=" + path : "") +
		( (domain) ? ";domain=" + domain : "") +
		( (secure) ? ";secure" : "");
	document.cookie = cookieString;
}

function not_shown_yet(cookiename){
	if (Get_Cookie(cookiename) == 'already_shown'){
		return false;
	} else {
		Set_Cookie(cookiename,'already_shown');
		return true;
	}
}	

function framebuster(){	(top != self)?top.location=self.location:false;}

function MM_openBrWindow(theURL,winName,features){
	window.open(theURL,winName,features);
}

function PopUnder(theURL,winName,features){
    var PopUnder = window.open(theURL,winName,features);
    if(PopUnder){
		PopUnder.blur();
	}
    window.focus();
}
function PopUnderDual(theURL,winName,features,theURL2,winName2,features2){
    var PopUnder = window.open(theURL,winName,features);
    if(PopUnder){
		PopUnder.blur();
	}
    var PopUnder2 = window.open(theURL2,winName2,features2);
    if(PopUnder2){
		PopUnder2.blur();
	}
}
function PopUnderSetCookie(cookieName,cookieDesc,theURL,winName,features){
	if (Get_Cookie(cookieName) == cookieDesc) {
		return false;
	} else {
		Set_Cookie(cookieName,cookieDesc);
		var PopUnder = window.open(theURL,winName,features);
		if(PopUnder){
			PopUnder.blur();
		}
		window.focus();
		return true;
	}
}

function checkChilds(elementID, changeID){
	($(elementID).selectedIndex != 0) ? $(changeID).style.display = 'block' : $(changeID).style.display = 'none';
}

function checkDisplayFamilienstand_swk(elementID, changeID){
	($(elementID).value != 2) ? $(changeID).style.display = 'block' : $(changeID).style.display = 'none';
}

function checkDisplayFamilienstand_creditplus(elementID, changeID){
	($(elementID).value != 'verheiratet') ? $(changeID).style.display = 'block' : $(changeID).style.display = 'none';
}

function checkDisplayFamilienstand_bhw(elementID, changeID){
	($(elementID).value != 2) ? $(changeID).style.display = 'block' : $(changeID).style.display = 'none';
}

function checkBerufsgruppe_swk(elementID, changeID, knID){
	if (knID == '') {
		var berufID = new Array('11','14','15','16','18','20', '21');
		for (var i=0; i < berufID.length; ++i) {
			if ($(elementID).value == berufID[i]) {
				$(changeID).style.display 	= 'block';
				$(elementID).value 			= '';
				$('kredit_antrag').value 		= '2';
				break;
			} else {
				$(changeID).style.display 	= 'none';
				$('kredit_antrag').value 		= '3';
			}
		}
	}
}

//BERUFCHECK FÜR CREDITPLUS
function checkBerufsgruppe_creditplus(elementID, changeID, knID){
	if (knID == '') {
		var berufID = new Array('06','11','12','14');
		for (var i=0; i < berufID.length; ++i) {
			if ($(elementID).value == berufID[i]) {
				$(changeID).style.display 	= 'block';
				$(elementID).value 			= '';
				$('kredit_antrag').value 		= '2';
				break;
			} else {
				$(changeID).style.display 	= 'none';
				$('kredit_antrag').value 		= '3';
			}
		}
	}
}

//BERUFCHECK FÜR BHW
function checkBerufsgruppe_bhw(elementID, changeID, knID){
	if (knID == '') {
		var berufID = new Array('06','09');
		for (var i=0; i < berufID.length; ++i) {
			if ($(elementID).value == berufID[i]) {
				$(changeID).style.display 	= 'block';
				$(elementID).value 			= '';
				$('kredit_antrag').value 		= '2';
				break;
			} else {
				$(changeID).style.display 	= 'none';
				$('kredit_antrag').value 		= '3';
			}
		}
	}
}

//Funktionen speziell für Kredit-Angebot Schritt 1/4
function checkDisplayStaatsangeh(elementID, changeID, knID){
	var EUR = new Array('BE','DK','DE','FI','FR','GR','GB','IE', 'IT', 'LU', 'NL', 'AT', 'PT', 'SE', 'ES');
	
	for (var i=0; i < EUR.length; ++i) {
		if ($(elementID).value == EUR[i]) {
			$(changeID).style.display = 'none';
			$(knID + 'aufenthaltBisTag').alt 		= '';
			$(knID + 'aufenthaltBisMonat').alt 	= '';
			$(knID + 'aufenthaltBisJahr').alt 	= '';
			break;
		} else {
			$(changeID).style.display = 'block';
			$(knID + 'aufenthaltBisTag').alt 		= '*';
			$(knID + 'aufenthaltBisMonat').alt 	= '*';
			$(knID + 'aufenthaltBisJahr').alt 	= '*';
		}
	}
}

function checkAufenthaltBefristet(elementValue, knID){
	if (elementValue == '1') {
		$(knID + 'aufenthaltBisTag').value 	= '';
		$(knID + 'aufenthaltBisMonat').value 	= '';
		$(knID + 'aufenthaltBisJahr').value 	= '';
		$(knID + 'aufenthaltBisTag').alt 		= '*';
		$(knID + 'aufenthaltBisMonat').alt 	= '*';
		$(knID + 'aufenthaltBisJahr').alt 	= '*';
	} else {
		$(knID + 'aufenthaltBisTag').value 	= '0';
		$(knID + 'aufenthaltBisMonat').value 	= '0';
		$(knID + 'aufenthaltBisJahr').value 	= '0';
		$(knID + 'aufenthaltBisTag').alt 		= '';
		$(knID + 'aufenthaltBisMonat').alt 	= '';
		$(knID + 'aufenthaltBisJahr').alt 	= '';
	}
}

function checkDisplayArbeitErlaubnisBefristet(wert,changeID,knID){
	if (wert > 0) {
		$(changeID).style.display 		= 'block';
		$(knID + 'arberldTag').value 	= '';
		$(knID + 'arberldMonat').value 	= '';
		$(knID + 'arberldJahr').value 	= '';
		$(knID + 'arberldTag').alt 		= '*';
		$(knID + 'arberldMonat').alt 	= '*';
		$(knID + 'arberldJahr').alt 	= '*';
	} else {
		$(changeID).style.display 		= 'none';
		$(knID + 'arberldTag').value 	= '0';
		$(knID + 'arberldMonat').value 	= '0';
		$(knID + 'arberldJahr').value 	= '0';
		$(knID + 'arberldTag').alt 		= '';
		$(knID + 'arberldMonat').alt 	= '';
		$(knID + 'arberldJahr').alt 	= '';
	}
}

function checkDisplayArbeitBefristet(wert,changeID,knID){
	if (wert > 0) {
		$(changeID).style.display 		= 'block';
		$(knID + 'besch_bisTag').value 	= '';
		$(knID + 'besch_bisMonat').value= '';
		$(knID + 'besch_bisJahr').value = '';
		$(knID + 'besch_bisTag').alt 	= '*';
		$(knID + 'besch_bisMonat').alt 	= '*';
		$(knID + 'besch_bisJahr').alt 	= '*';
	} else {
		$(changeID).style.display 		= 'none';
		$(knID + 'besch_bisTag').value 	= '0';
		$(knID + 'besch_bisMonat').value= '0';
		$(knID + 'besch_bisJahr').value = '0';
		$(knID + 'besch_bisTag').alt 	= '';
		$(knID + 'besch_bisMonat').alt 	= '';
		$(knID + 'besch_bisJahr').alt 	= '';
	}
}

//Funktionen speziell für Kredit-Angebot Schritt 2/4
function checkDisplayKFZ(changeID, num, knID){
	if (num > 0) {
		$(changeID).style.display 	= 'block';
		$(knID + 'kfzLeistung').alt = '*';
		$(knID + 'kfzBaujahr').alt 	= '*';
	} else {
		$(changeID).style.display 	= 'none';
		$(knID + 'kfzLeistung').alt = '';
		$(knID + 'kfzBaujahr').alt 	= '';
	}
}

//Check Sonstige Einkünfte, wenn Einkunftsart ausgewählt wurde
function checkSonstigeEinkuenfte(elementID1, elementID2){
	if ($(elementID1).value != 'kein' && $(elementID2).value == '') {
		$(elementID2).alt = '*';
		alert('Bitte geben Sie die Höhe Ihrer sonstigen Einkünfte an!');
	} else {
        $(elementID2).alt = '';
    }
	if ($(elementID1).value == 'kein') {
		$(elementID2).value = '';
    }
}

function stripBlanks(fld){
	var result = '';
	var c = 0;
	for (var i=0; i<fld.length; i++) {
        if (fld.charAt(i) != " " || c > 0) {
            result += fld.charAt(i);
            if (fld.charAt(i) != " ") {
                c = result.length;
            }
		}
	}
	return result.substr(0,c);
}
//CHECK BLANK
function validBlank(fld){
	fld = stripBlanks(fld);
	if (fld == '') {
		alert('Bitte füllen Sie das Feld ordungsgemäß aus');	
		return false; 
	}
	// other validations for this field to be added here
	return true;
} 
//CHECK NUMERIC
function validNum(formID, elementID){
	if (isNaN(document.forms[formID].elements[elementID].value)) {
		document.forms[formID].elements[elementID].value = '';
		alert('Bitte verwenden Sie nur Zahlen für das Feld!');
		return false; 
	}
}
//CHECK DATE
function validDay(formID, elementID){
	if (isNaN(document.forms[formID].elements[elementID].value) || parseInt(document.forms[formID].elements[elementID].value) > 31) {
		document.forms[formID].elements[elementID].value = '';
		alert('Bitte geben Sie einen gültigen Tag ein!');	
		return false; 
	}
	return true;
}

function validMonth(formID, elementID){
	if (isNaN(document.forms[formID].elements[elementID].value) || parseInt(document.forms[formID].elements[elementID].value) > 12) {
		document.forms[formID].elements[elementID].value = '';
		alert('Bitte geben Sie einen gültigen Monat ein!');	
		return false; 
	}
	return true;
} 
//CHECK YEAR PAST
function validYear(formID, elementID){
	if (isNaN(document.forms[formID].elements[elementID].value)) {
		document.forms[formID].elements[elementID].value = '';
		alert('Bitte geben Sie eine gültige Jahreszahl ein!');	
		return false; 
	}
	return true;
} 
//CHECK IF KFZ BUILD YEAR, MUST BE IN THE PAST
function validYearKfz(formID, elementID){
	var jetzt = new Date();
	var Jahr = jetzt.getFullYear();

	if (isNaN(document.forms[formID].elements[elementID].value)) {
		document.forms[formID].elements[elementID].value = '';
		alert('Bitte geben Sie eine gültige Jahreszahl ein!');	
		return false; 
	} else if (parseInt(document.forms[formID].elements[elementID].value) > Jahr) {
		document.forms[formID].elements[elementID].value = '';
		alert('Das Datum darf nicht in der Zukunft liegen!');	
	}
	return true;
}

//CHECK THE wohnhaftSeit
function validWohnhaftSeit(formID, changeID, elementID1, elementID2, elementID3, knID){
	var jetzt = new Date();
	var now = new Date;
	var inputDate = new Date(parseInt(document.forms[formID].elements[elementID1].value), parseInt(document.forms[formID].elements[elementID2].value)-1, parseInt(document.forms[formID].elements[elementID3].value)+1);
	
	now = now.getTime();
	inputDate = inputDate.getTime();
	toShort = jetzt.getTime()-63115200000;//2 jahre

	if (isNaN(document.forms[formID].elements[elementID1].value) || isNaN(document.forms[formID].elements[elementID2].value)){
		document.forms[formID].elements[elementID1].value = '';
		document.forms[formID].elements[elementID2].value = '';
		document.forms[formID].elements[elementID3].value = '';
		alert('Bitte geben Sie eine gültige Jahreszahl ein!');	
		return false; 
		}
	if (inputDate > now){
		document.forms[formID].elements[elementID1].value = '';
		document.forms[formID].elements[elementID2].value = '';
		document.forms[formID].elements[elementID3].value = '';
		alert('Das Datum darf nicht in der Zukunft liegen!');	
		return false; 
		}
	if (inputDate > toShort){
		$(changeID).style.display = 'block';		
		$(knID + 'land2').alt 	= '*';
		$(knID + 'strasse2').alt 	= '*';
		$(knID + 'hausnr2').alt 	= '*';
		$(knID + 'PLZ2').alt 		= '*';
		$(knID + 'ort2').alt 		= '*';
		}
	else{
		$(changeID).style.display = 'none';		
		$(knID + 'land2').alt 	= '';
		$(knID + 'strasse2').alt 	= '';
		$(knID + 'hausnr2').alt 	= '';
		$(knID + 'PLZ2').alt 		= '';
		$(knID + 'ort2').alt 		= '';
		}
	return true;
}

//CHECK IF YEAR IN THE PAST
function noFutureValidation(formID, elementID1, elementID2, elementID3){
	var now = new Date;
	var inputDate = new Date(parseInt(document.forms[formID].elements[elementID1].value), parseInt(document.forms[formID].elements[elementID2].value)-1, parseInt(document.forms[formID].elements[elementID3].value)+1);
	
	now = now.getTime();
	inputDate = inputDate.getTime();

	if (isNaN(document.forms[formID].elements[elementID1].value) || isNaN(document.forms[formID].elements[elementID2].value)){
		document.forms[formID].elements[elementID1].value = '';
		document.forms[formID].elements[elementID2].value = '';
		document.forms[formID].elements[elementID3].value = '';
		alert('Bitte geben Sie eine gültige Jahreszahl ein!');	
		return false; 
		}
	if (inputDate > now){
		document.forms[formID].elements[elementID1].value = '';
		document.forms[formID].elements[elementID2].value = '';
		document.forms[formID].elements[elementID3].value = '';
		alert('Das Datum darf nicht in der Zukunft liegen!');	
		return false; 
		}
	return true;
}

//CHECK IF YEAR IN THE PAST
function arbeitgeberSeitCreditPlus(formID, changeID, elementID1, elementID2, elementID3, knID){
	if (isNaN(document.forms[formID].elements[elementID1].value) || isNaN(document.forms[formID].elements[elementID2].value) || isNaN(document.forms[formID].elements[elementID3].value)){
		document.forms[formID].elements[elementID1].value = '';
		document.forms[formID].elements[elementID2].value = '';
		document.forms[formID].elements[elementID3].value = '';
		alert('Bitte geben Sie ein gültiges Datum ein!');	
		return false; 
		}
	
	if(document.forms[formID].elements[elementID1].value != ''){
		var jetzt = new Date();
		var now = new Date;
		var inputDate = new Date(parseInt(document.forms[formID].elements[elementID1].value), parseInt(document.forms[formID].elements[elementID2].value)-1, parseInt(document.forms[formID].elements[elementID3].value)+1);
		
		now = now.getTime();
		inputDate = inputDate.getTime();
		toShort = jetzt.getTime()-63115200000;//2 Jahre
		sixMonth = jetzt.getTime()-15778800000;//6 Monate
	
		if (inputDate > now){
			document.forms[formID].elements[elementID1].value = '';
			document.forms[formID].elements[elementID2].value = '';
			document.forms[formID].elements[elementID3].value = '';
			alert('Das Datum darf nicht in der Zukunft liegen!');	
			return false; 
			}
		if(inputDate > sixMonth){
			document.forms[formID].elements[elementID1].value = '';
			document.forms[formID].elements[elementID2].value = '';
			document.forms[formID].elements[elementID3].value = '';
			alert('Sie müssen länger als 6 Monate bei Ihrem Arbeitgeber beschäftigt sein!');	
			}
		if (inputDate > toShort){
			$(changeID).style.display = 'block';		
			$(knID + 'ag_str2').alt 	= '*';
			$(knID + 'ag_plz2').alt 	= '*';
			$(knID + 'ag_ort2').alt 	= '*';
			$(knID + 'besch2j').alt 	= '*';
			}
		else{
			$(changeID).style.display = 'none';		
			$(knID + 'ag_str2').alt 	= '';
			$(knID + 'ag_plz2').alt 	= '';
			$(knID + 'ag_ort2').alt 	= '';
			$(knID + 'besch2j').alt 	= '';
			}
		return true;
		}
}

//CHECK IF YEAR IN THE FUTURE
function aufenthaltBisValidation(formID, elementID1, elementID2, elementID3){
	var now = new Date;
	var inputDate = new Date(parseInt(document.forms[formID].elements[elementID1].value), parseInt(document.forms[formID].elements[elementID2].value)-1, parseInt(document.forms[formID].elements[elementID3].value));
	
	now = now.getTime();
	inputDate = inputDate.getTime();

	if (isNaN(document.forms[formID].elements[elementID1].value) || isNaN(document.forms[formID].elements[elementID2].value) || isNaN(document.forms[formID].elements[elementID3].value)){
		document.forms[formID].elements[elementID1].value = '';
		document.forms[formID].elements[elementID2].value = '';
		document.forms[formID].elements[elementID3].value = '';
		alert('Bitte geben Sie eine gültige Jahreszahl ein!');	
		return false; 
		}
	if (inputDate < now){
		document.forms[formID].elements[elementID1].value = '';
		document.forms[formID].elements[elementID2].value = '';
		document.forms[formID].elements[elementID3].value = '';
		alert('Das Datum muss in der Zukunft liegen!');	
		return false; 
		}
	return true;
}

// GEBURTSJAHR
function gebdatumValidation(formID, elementID1, elementID2, elementID3){
	if (document.forms[formID].elements[elementID1].value == '' ||
		document.forms[formID].elements[elementID2].value == '' ||
		document.forms[formID].elements[elementID3].value == '' ||
		document.forms[formID].elements[elementID1].value == '0' ||
		document.forms[formID].elements[elementID2].value == '0' ||
		document.forms[formID].elements[elementID3].value == '0') {
		return false;
	}
	var jetzt = new Date();
	var inputDate = new Date(parseInt(document.forms[formID].elements[elementID1].value), parseInt(document.forms[formID].elements[elementID2].value)-1, parseInt(document.forms[formID].elements[elementID3].value));
	
	toOld = jetzt.getTime()-2051244000000; //65 jahre
	toYoung = jetzt.getTime()-568036800000;//18 jahre
	inputDate = inputDate.getTime();

	if (isNaN(document.forms[formID].elements[elementID1].value) || isNaN(document.forms[formID].elements[elementID2].value) || isNaN(document.forms[formID].elements[elementID3].value)){
		document.forms[formID].elements[elementID1].value = '';
		document.forms[formID].elements[elementID2].value = '';
		document.forms[formID].elements[elementID3].value = '';
		alert('Bitte geben Sie eine gültige Jahreszahl ein!');	
		return false; 
		}
	if (inputDate < toOld){
		document.forms[formID].elements[elementID1].value = '';
		document.forms[formID].elements[elementID2].value = '';
		document.forms[formID].elements[elementID3].value = '';
		alert('Das Höchstalter beträgt 65 Jahre!');	
		return false; 
		}
	if (inputDate > toYoung){
		document.forms[formID].elements[elementID1].value = '';
		document.forms[formID].elements[elementID2].value = '';
		document.forms[formID].elements[elementID3].value = '';
		alert('Das Mindesalter beträgt 18 Jahre!');	
		return false; 
		}
	return true;
}

//CHECK KREDITBETRAG
function kreditbetragValidation(formID, elementID){
	if (isNaN(parseInt(document.forms[formID].elements[elementID].value))){
			alert('Bitte verwenden Sie nur Zahlen für das Feld!');
		document.forms[formID].elements[elementID].value = '';
		return false; 
		}
	if(parseInt(document.forms[formID].elements[elementID].value) > 100000){
		alert('Der Höchstbetrag für den Kredit beträgt 100000€!');
		document.forms[formID].elements[elementID].value = '';
		return false; 
		}
	else if(parseInt(document.forms[formID].elements[elementID].value) < 500){
		alert('Der Mindestbetrag für den Kredit beträgt 500€!');
		document.forms[formID].elements[elementID].value = '';
		return false; 
		}
}

//CHECK AT SUBMIT BLANK FIELDS
function checkAllFields(id){
	var errormsg = '';
	//alert('HiHi');
	var error = 'Bitte füllen sie folgende Felder korrekt aus:\n';
	for(var i = 0; i < document.forms[id].elements.length; i++){ 
		//alert(document.forms[id].elements[i].name);
		//alert(document.forms[id].elements[i].type);
		if(document.forms[id].elements[i].value == '' && document.forms[id].elements[i].alt == '*') 
			errormsg = errormsg + document.forms[id].elements[i].title + '\n'; 
		else if(document.forms[id].elements[i].type == 'checkbox' && document.forms[id].elements[i].checked == false)
			errormsg = errormsg + document.forms[id].elements[i].title + '\n'; 
		else if(document.forms[id].elements[i].type == 'select-one' && (document.forms[id].elements[i].value == '' || document.forms[id].elements[i].value == '0'))
			errormsg = errormsg + document.forms[id].elements[i].title + '\n'; 
		}
	(errormsg.length > 0) ? alert(error+errormsg) : document.forms[id].submit();
}

function switchImage(imgName, imgSrc){
	if(document.images){
		if(imgSrc != "none")
		document.images[imgName].src = imgSrc;
	}
}

//CHECK EMAIL
function validMail(formID, elementID){
	if(!document.forms[formID].elements[elementID].value.match(/^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)*@([0-9a-zA-Z][0-9a-zA-Z-]*[0-9A-Za-z]\.)+([A-Za-z]{2,4})$/)){
		document.forms[formID].elements[elementID].value = "";
		alert("Bitte geben Sie eine gültige E-Mail Adresse ein."); 
		return false;
	}
}

function checkDisplay(elementID){
	$(elementID).style.display = $(elementID).style.display == 'none' ? '' : 'none';
}

function addClassName(elementName, KlassenName){
    var element = $(elementName);
	if (!(element)) return;
	
    if (!hasClassName(elementName, KlassenName)) {
		element.className += (element.className ? ' ' : '') + KlassenName;
	}
    return element;
}

function removeClassName(elementName, KlassenName){
    var element = $(elementName);
	if (!(element)) return;
	
    element.className = strip(element.className.replace(
      new RegExp("(^|\\s+)" + KlassenName + "(\\s+|$)"), ' '));
    return element;
}

function hasClassName(elementName, KlassenName){
    var element = $(elementName);
	if (!(element)) return;
	
    var elementClassName = element.className;
    return (elementClassName.length > 0 && (elementClassName == KlassenName ||
      new RegExp("(^|\\s)" + KlassenName + "(\\s|$)").test(elementClassName)));
}

function element_visible(element){
    return $(element).style.display != 'none';
}

function toggle(element){
    var is_visible = element_visible(element);
	
	if (is_visible) {
		element_hide(element);
	} else {
		element_show(element);
	}
    return $(element);
}

function element_hide(element){
    $(element).style.display = 'none';
    return element;
}

function element_show(element){
    $(element).style.display = 'block';
    return element;
}

function toggleClass(elementName, KlassenName){
    var element = $(elementName);
	if (!(element)) return;
	
	if (hasClassName(elementName, KlassenName)) {
		removeClassName(elementName, KlassenName);
	} else {
		addClassName(elementName, KlassenName);
	}
    return element;
}

function strip(string){
    return string.replace(/^\s+/, '').replace(/\s+$/, '');
}

/**
 * validMailByID(elementID)
 *
 * validates a E-Mail address by giving the ID of the field where the address is
 * strored
 *
 * @param string  elementID the name of the field, where the address is stored
 * 
 * @return boolean
 */
function validMailByID(elementID){
    var elementValue = $(elementID).value;
    if (!elementValue.match(/^[a-zA-Z0-9_-]+([\.|\+][a-zA-Z0-9_-]+)*@([0-9a-zA-Z][0-9a-zA-Z-]*[0-9A-Za-z]\.)+([A-Za-z]{2,4})$/)) {
        elementValue = "";
        return false;
    } else {
        return true;
    }
}

/**
 * disableOptions(id,start,end)
 *
 * clears the options on a select field
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 * 
 * @return void
 */
function disableOptions(id,start,end){
    for (var i = start; i < end; i++) {
        $(id).options[1] = null;
    }
}

/**
 * filterKrankenhausTageGeld(value)
 *
 * fills options for the field 'krankentagegeld_ab'
 *
 * @param string  value  ?
 * 
 * @return void
 */
function filterKrankenhausTageGeld(value){
    if(value == 1){
        disableOptions('krankentagegeld_ab',1,6);
        $('krankentagegeld_ab').options[1].selected = 'true';
    } else if ($('krankentagegeld_ab').options.length < 8){ 
        fillOptions('krankentagegeld_ab',1,6);
    }
}

/**
 * fillOptions(id)
 *
 * fills options into a select field
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 * 
 * @return void
 */
function fillOptions(id){
    opt = new Array('- -','3','8','15','25','29','43','92','183');
    for(var i = 0; i < $(id).options.length; i++){
        $(id).options[i] = null;
    }
    for(var i = 0; i < opt.length; i++){
        $(id).options[i] = new Option(opt[i],opt[i],false,true);
    }
    $(id).options[0].selected = 'true';
}

/**
 * validateDateFields(dayField, monthField, yearField)
 *
 * validates a date stored in separate fields for day, month and year
 *
 * @param string  dayField   the name of the day field
 * @param string  monthField the name of the month field
 * @param string  yearField  the name of the year field
 * 
 * @return boolean
 */
function validateDateFields(dayField, monthField, yearField){
    var day   = $(dayField).value;
    var month = $(monthField).value;
    var year  = $(yearField).value;
    return validateDate(day, month, year, 0);
}

/**
 * validateDateString(dateString, future)
 *
 * validates a date stored in a single field or in a string
 *
 * @param string  dateString the string containing the date
 * @param integer future     a flag to tell, if future dates are allowed
 * 
 * @return boolean
 */
function validateDateString(dateString, future){
    var date = new Date();
    var d    = dateString.split('.');
    //ignore, if input is empty
    if (dateString == '') {
        return true;
    }
    if (d.length == 2) {
        d[2] = d[1];
        d[1] = d[0];
        d[0] = '01';
    }
    if (d.length == 3) {
        if (d[2].lenght > 4) {
            d[2] = d[2].substr(0, 4);
        } else if  (d[2].lenght == 3) {
            d[2] += '0';
        } else if  (d[2].lenght == 2) {
            if (d[2] >= 50) {
                d[2] = '19' + d[2];
            } else {
                d[2] = '20' + d[2];
            }
        }
    } else {
        return false;
    }
    if (future < 0) {
        future = 0;
    }
    if (future > 2) {
        future = 2;
    }
    return validateDate(d[0], d[1], d[2], future);
}

/**
 * validateDate(day, month, year, future)
 *
 * validates a date
 *
 * @param integer day    the day value of a date
 * @param integer month  the month value of a date
 * @param integer year   the year value of a date
 * @param integer future a flag to tell, if future dates are allowed
 * 
 * @return boolean
 */
function validateDate(day, month, year, future){
    var date = new Date();
    var actualYear = date.getFullYear();
    if (future < 0) {
        future = 0;
    }
    if (future > 2) {
        future = 2;
    }
    if (IsDecimal(day, true) || IsDecimal(month, true) || IsDecimal(year, true)) {
        return false;
    } else if (day == '' || month == '' || year == '') {
        return false;
    }
    day   = Decimal(day, false);
    month = Decimal(month, false);
    year  = Decimal(year, false);
    if (day > 31) {
        return false;
    } else if (month > 12) {
        return false;
    } else if (month == 2 && day > 29) {
        return false;
    } else if (month == 2 && day == 29 && ((year % 4) > 0 || ((year % 4) == 0 && ((year % 100) == 0 && (year % 400) > 0)))) {
        return false;
    } else if ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30) {
        return false;
    } else {
        var tomorrow  = new Date(actualYear, date.getMonth(), date.getDate() + 30);
        var today     = new Date(actualYear, date.getMonth(), date.getDate());
        var fieldDate = new Date(year, month - 1, day);
        if ((future == 0 && fieldDate >= today) || (future == 2 && fieldDate < tomorrow) || year < (actualYear - 85)) {
            // no future dates
            // no dates more than 85 years ago
            return false;
        } else {
            return true;
        }
    }
}

/**
 * IsNumeric(sText, replace)
 *
 * checks if a var holds numeric data
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 * 
 * @return boolean
 */
function IsNumeric(sText, replace){
    if (sText == '') {
        return true;
    }
    dummy = Numeric(sText, replace);
    if (dummy === '') {
        return true;
    }
    return isNaN(dummy);
}

/**
 * Numeric(sText, replace)
 *
 * transforms a string to a numeric
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 * 
 * @return boolean
 */
function Numeric(sText, replace){
    if (replace !== true) {
        replace = false;
    }
    if (typeof(sText) != 'string') {
        sText = sText.toString();
    }
    if (replace === true && sText.indexOf(',') != -1) {
        sText = sText.replace(/\./g, '');
        sText = sText.replace(/,/, '.');
    }
    sText = parseFloat(sText).toString(10);
    if (sText.substr(0,3) == 'NaN') {
        return '';
    }
    pos   = sText.indexOf('.');
    if (pos === -1) {
        sText += '.00';
    } else {
        sText += '00';
        sText = sText.substring(0, pos) + '.' + sText.substr(pos + 1, 2);
    }
    return sText;
}

/**
 * IsDecimal(sText, replace)
 *
 * checks if a var holds decimal data
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 * 
 * @return boolean
 */
function IsDecimal(sText, replace){
    if (sText == '') {
        return true;
    }
    dummy = Decimal(sText, replace);
    if (dummy === '') {
        return true;
    }
    return isNaN(dummy);
}

/**
 * Decimal(sText, replace)
 *
 * transforms a string to a decimal
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 * 
 * @return boolean
 */
function Decimal(sText, replace){
    if (replace !== true) {
        replace = false;
    }
    if (typeof(sText) != 'string') {
        sText = sText.toString();
    }
    if (replace === true && sText.indexOf(',') != -1) {
        sText = sText.replace(/\./g, '');
        sText = sText.replace(/,/, '.');
    }
    sText = parseInt(sText, 10);
    if (sText == 'NaN') {
        sText = '';
    }
    return sText;
}

/**
 * IsPhone(sText, replace)
 *
 * checks if a var holds a phone number
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 * 
 * @return boolean
 */
function IsPhone(sText, replace){
    if ((sText.indexOf('0') != 0 && sText.indexOf('+') != 0) || IsDecimal(sText, replace)) {
        return true;
    } else {
        return false;
    }
}

/**
 * Phone(sText, replace)
 *
 * transforms a string to a phone number
 *
 * @param string  form  the Tab where the field is placed
 * @param string  field the name of the field, which should be focused
 * 
 * @return boolean
 */
function Phone(sText, replace){
    if (sText.indexOf('0') == 0) {
        sText = '0' + Decimal(sText, replace);
    } else if (sText.indexOf('+') == 0) {
        sText = '+' + Decimal(sText, replace);
    } else {
        sText = Decimal(sText, replace);
    }
    return sText;
}

function validateForm(theFormname,theFieldlist,goodMess,badMess,emailMess){
	if (document[theFormname] && theFieldlist)	{
		var index=1;
		var theField = split(theFieldlist, ",", index);
		var msg="";
		var theEreg = '';
		var theEregMsg = '';
		var specialMode = '';

		while (theField) {
			theEreg = '';
			specialMode = '';

				// Check special modes:
			if (theField == '_EREG')	{	// EREG mode: _EREG,[error msg],[JS ereg],[fieldname],[field Label]
				specialMode = theField;

				index++;
				theEregMsg = unescape(split(theFieldlist, ",", index));
				index++;
				theEreg = unescape(split(theFieldlist, ",", index));
			} else if (theField == '_EMAIL')	{
				specialMode = theField;
			}

				// Get real field name if special mode has been set:
			if (specialMode)	{
				index++;
				theField = split(theFieldlist, ",", index);
			}

			index++;
			theLabel = unescape(split(theFieldlist, ",", index));
			theField = unescape(theField);
			if (document[theFormname][theField])	{
				var fObj = document[theFormname][theField];
				var type=fObj.type;
				if (!fObj.type)	{
					type="radio";
				}
				var value="";
				switch(type)	{
					case "text":
					case "textarea":
						value = fObj.value;
					break;
					case "select-one":
						if (fObj.selectedIndex>=0)	{
							value = fObj.options[fObj.selectedIndex].value;
						}
					break;
					case "select-multiple":
						var l=fObj.length;
						for (a=0;a<l;a++)	{
							if (fObj.options[a].selected)	{
								 value+= fObj.options[a].value;
							}
						}
					break;
					case "radio":
						var l=fObj.length;
						for (a=0; a<l;a++)	{
							if (fObj[a].checked)	{
								value = fObj[a].value;
							}
						}
					break;
					default:
						value=1;
				}

				switch(specialMode)	{
					case "_EMAIL":
						var theRegEx_notValid = new RegExp("(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)", "gi");
						var theRegEx_isValid = new RegExp("^.+\@[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,4}|[0-9]{1,3})$","");
						if (!theRegEx_isValid.test(value))	{	// This part was supposed to be a part of the condition: " || theRegEx_notValid.test(value)" - but I couldn't make it work (Mozilla Firefox, linux) - Anyone knows why?
							msg+="\n"+theLabel+' ('+(emailMess ? unescape(emailMess) : 'Keine gültige E-Mail Adresse!')+')';
						}
					break;
					case "_EREG":
						var theRegEx_isValid = new RegExp(theEreg,"");
						if (!theRegEx_isValid.test(value))	{
							msg+="\n"+theLabel+' ('+theEregMsg+')';
						}
					break;
					default:
						if (!value)	{
							msg+="\n"+theLabel;
						}
				}
			}
			index++;
			theField = split(theFieldlist, ",", index);
		}
		if (msg)	{
			var theBadMess = unescape(badMess);
			if (!theBadMess)	{
				theBadMess = "Sie müssen diese Felder ausfüllen:";
			}
			theBadMess+="\n";
			alert(theBadMess+msg);
			return false;
		} else {
			var theGoodMess = unescape(goodMess);
			if (theGoodMess)	{
				alert(theGoodMess);
			}
			return true;
		}
	}
}

function split(theStr1, delim, index){
	var theStr = ''+theStr1;
	var lengthOfDelim = delim.length;
	sPos = -lengthOfDelim;
	if (index<1) {index=1;}
	for (a=1; a<index; a++)	{
		sPos = theStr.indexOf(delim, sPos+lengthOfDelim);
		if (sPos==-1)	{return null;}
	}
	ePos = theStr.indexOf(delim, sPos+lengthOfDelim);
	if(ePos == -1)	{ePos = theStr.length;}
	return (theStr.substring(sPos+lengthOfDelim,ePos));
}

/**
 * validMailByID(elementID)
 *
 * validates a E-Mail address by giving the ID of the field where the address is
 * strored
 *
 * @param string  elementID the name of the field, where the address is stored
 * 
 * @return boolean
 */
function validMailByID(elementID){
    var elementValue = $(elementID).value;
    if (!elementValue.match(/^[a-zA-Z0-9_-]+([\.|\+][a-zA-Z0-9_-]+)*@([0-9a-zA-Z][0-9a-zA-Z-]*[0-9A-Za-z]\.)+([A-Za-z]{2,4})$/)) {
        elementValue = "";
        return false;
    } else {
        return true;
    }
}
