/* formcheck library
*/
function ValueLength(sId, iValueLength, sLanguage) {
	sLanguage = sLanguage || 'd';

    sValue = window.document.getElementById(sId).value;
//	window.document.getElementById(sId).maxlength = window.document.getElementById(sId).maxlength + 1;
//	window.document.getElementById(sId).removeAttribute('maxlength');
	switch(sLanguage) {
		case 'e':
		    sMessage = 'You cannot enter more than ' + iValueLength + ' characters.'
			break;
		case 's':
		    sMessage = 'You cannot enter more than ' + iValueLength + ' characters.'
			break;
		case 'd':
		default:
		    sMessage = 'Sie können nicht mehr als ' + iValueLength + ' Zeichen eingeben.'
			break;
	}
	if(sValue.length > iValueLength) {
		alert(sMessage);
		window.document.getElementById(sId).value = sValue.substr(0, iValueLength);
		window.document.getElementById(sId).focus();
	}
}



function ValueCheck(sId, iMode, sLanguage) {
	sLanguage = sLanguage || 'd';

	// Funtioniert nur bei <input type="text"> oder <textarea></textarea>
	// iMode = dieser Zeichentyp darf nicht vorkommen;
	//     iMode = 'd' (Digits -> Zahlen) || iMode = 'l' (Letters -> Buchstaben)
    sValue = window.document.getElementById(sId).value;

    switch (iMode) {
        case 'l':
		    iPosOfMatch = sValue.search(/\D/gi);
		    switch(sLanguage) {
				case 'e':
				    sMessage = 'Digits';
					break;
				case 's':
				    sMessage = 'los Números';
					break;
				case 'd':
				default:
				    sMessage = 'Ziffern';
					break;
			}
			break;
        case 'd':
		    iPosOfMatch = sValue.search(/\d/gi);
		    switch(sLanguage) {
				case 'e':
				    sMessage = 'Letters';
					break;
				case 's':
				    sMessage = 'las Letras';
					break;
				case 'd':
				default:
				    sMessage = 'Buchstaben';
					break;
			}
		    break;
		default:
		    break;
	}

    if(sMessage && iPosOfMatch != -1) {
		switch(sLanguage) {
			case 'e':
				sMessage = 'Please insert only ' + sMessage + '.';
				break;
			case 's':
			    sMessage = 'Inserte por favor solamente ' + sMessage + '.';
				break;
			case 'd':
			default:
				sMessage = 'Bitte geben Sie hier nur ' + sMessage + ' ein.';
				break;
		}
		alert(sMessage);
    	window.document.getElementById(sId).value = sValue.substr(0, iPosOfMatch);
	}
}




//010711 selected -1 - bei  selectboxen mit eingestellter size; deshalb <= 0
function formcheck_selected(ofrm, sFieldName, sShowName){
	var iUnselected
	if (ofrm.elements[sFieldName].size > 0)
		iUnselected = -1
	else
		iUnselected = 0
	if 	(ofrm.elements[sFieldName].selectedIndex <= iUnselected)
		return ((sShowName == "") ? string_beautify_1st(sFieldName) : sShowName)+ "\n"
	else
		return ""
}

function formcheck_selected_array(ofrm, aFieldName, aShowName, sLanguage) {
	sLanguage = sLanguage || 'd';

	var sMissingFields = ""
	for (var i=0; i <= aFieldName.length-1; i++)
		sMissingFields += formcheck_selected(ofrm,aFieldName[i], aShowName[i])
	if (sMissingFields != "") {
		switch(sLanguage) {
			case 'e':
				sMessage = 'The following Lists were not selected:'
				break;
			case 's':
				sMessage = 'The following Lists were not selected:'
				break;
			case 'd':
			default:
				sMessage = 'Folgende Listen wurden nicht ausgewählt:'
				break;
		}
		sMissingFields = sMessage + "\n\n" + sMissingFields + "\n";
	}
	return sMissingFields
}

function formcheck_must(ofrm, sFieldName, sShowName){
	if 	(ofrm.elements[sFieldName].value == "")
		return ((sShowName == "") ? string_beautify_1st(sFieldName) : sShowName)+ "\n"
	else
		return ""
}

function formcheck_must_array(ofrm, aFieldName, aShowName, sLanguage) {
	sLanguage = sLanguage || 'd';

	var sMissingFields = "";
    switch(sLanguage) {
		case 'e':
			sMissingFieldsLabel = "The following fields were not filled out:";
			break;
		case 's':
			sMissingFieldsLabel = "The following fields were not filled out:";
			break;
		case 'd':
		default:
			sMissingFieldsLabel = "Folgende Felder wurden nicht ausgefüllt:";
			break;
	}
    for (var i=0; i <= aFieldName.length-1; i++)
		sMissingFields += formcheck_must(ofrm,aFieldName[i], aShowName[i])
	if (sMissingFields != "")
		sMissingFields = sMissingFieldsLabel + "\n\n" + sMissingFields + "\n"
	return sMissingFields
}






function formcheck_not_equal(ofrm, sProperty, aFieldName, aShowName, sLanguage) {
	sLanguage = sLanguage || 'd';

	var sEqualFields = ""
	var aEqual = new Array()
	for (var i=0; i < aFieldName.length-1; i++){
		for (var i2=i+1; i2 < aFieldName.length; i2++){
			//if ( (ofrm.elements[aFieldName[i]].value).toString() == (ofrm.elements[aFieldName[i2]].value).toString() )
			if ( eval("(ofrm.elements[aFieldName[i]]."+sProperty+").toString() == (ofrm.elements[aFieldName[i2]]."+sProperty+").toString()") )
			{
				array_push_once(aEqual, string_beautify_1st(aShowName[i]))
				array_push_once(aEqual, string_beautify_1st(aShowName[i2]))
			}
		}
	}
	if (aEqual.length) {
		switch(sLanguage) {
			case 'e':
				sMessage = "The following fields may not be equal:";
				break;
			case 's':
				sMessage = "The following fields may not be equal:";
				break;
			case 'd':
			default:
				sMessage = "Folgende Felder dürfen nicht gleich sein:";
				break;
		}
		sEqualFields = sMessage + "\n\n" + aEqual.join("\n")+"\n\n"
	}
	return sEqualFields
}

function formcheck_email(ofrm, sFieldName, sShowName){
	if ( ofrm.elements[sFieldName].value != "" ) 
		if ( (ofrm.elements[sFieldName].value).indexOf("@") == -1 || (ofrm.elements[sFieldName].value).indexOf(".") == -1)
			return ((sShowName == "") ? string_beautify_1st(sFieldName) : sShowName)+ "\n"
	return ""
}

function formcheck_email_array(ofrm, aFieldName, aShowName, sLanguage) {
	sLanguage = sLanguage || 'd';

	var sWrongEmail = ""
	for (var i=0; i <= aFieldName.length-1; i++)
		sWrongEmail += formcheck_email(ofrm, aFieldName[i], aShowName[i])
	if (sWrongEmail != "") {
		switch(sLanguage) {
			case 'e':
				sMessage = "The following fields contain invalid email addresses:";
				break;
			case 's':
				sMessage = "The following fields contain invalid email addresses:";
				break;
			case 'd':
			default:
				sMessage = "Folgende Felder enthalten ungültige Email-Adressen:";
				break;
		}
		sWrongEmail = sMessage + "\n\n" + sWrongEmail+"\n\n"
	}
	return sWrongEmail
}

function formcheck_date(ofrm, sFieldName, sShowName){
	var iYear = 0, iMonth = 0 , iDay = 0, iHour = 0, iMinute = 0, iSecond =0
	var sValue = ""
	var bOK = true;
	// Valid Format: 2000-06-31*12:50:59 
	//				 1234-67-90-23-56-89
	sValue = ofrm.elements[sFieldName].value
	if ( sValue != "" ){
		iYear =		0 + sValue.substr(1,4)
		iMonth =	0 + sValue.substr(6,2)
		iDay =		0 + sValue.substr(9,2)
		if ( iMonth > 12 ) bOK = false;
		if ( iDay > 31 ) bOK = false;
		if ( sValue.length > 11 ){
			iHour =		0 + sValue.substr(12,2)
			iMinute =	0 + sValue.substr(15,2)
			iSecond =	0 + sValue.substr(18,2)
			if ( iHour > 24 ) bOK = false;
			if ( iMinute > 60 ) bOK = false;
			if ( iSecond > 60 ) bOK = false;
		}
		return ((sShowName == "") ? string_beautify_1st(sFieldName) : sShowName)+ "\n"
	}
	return ""
}

function formcheck_all_except(ofrm, aExcept){
	var sMissingFields = ""
	for (var oField in ofrm){
		if (oField.type == "text" || oField.type == "textarea" || oField.type == "password" )
			sMissingFields += formcheck_must(ofrm, oField.name, oField.name)
	}
	return sMissingFields
}

function formcheck_number(ofrm, sFieldName, sShowName, sLanguage) {
	sLanguage = sLanguage || 'd';

	var sVal = "" + ofrm.elements[sFieldName].value
	var sDigits = "0123456789"
	for (var i=0; i<sVal.length; i++)
		if (sDigits.indexOf(sVal.charAt(i)) == -1 ) {
		switch(sLanguage) {
			case 'e':
				sMessage = "The following fields contain invalid email addresses:";
				break;
			case 's':
				sMessage = "The following fields contain invalid email addresses:";
				break;
			case 'd':
			default:
				sMessage = "Folgende Felder enthalten ungültige Email-Adressen:";
				break;
		}
			return sMessage + " " + ((sShowName == "") ? string_beautify_1st(sFieldName) : sShowName)+ "\n"
		}
	return ""
}
function formcheck_length(ofrm, iLength, sFieldName, sShowName, sLanguage) {
	sLanguage = sLanguage || 'd';

	if 	((""+ofrm.elements[sFieldName].value).length > iLength) {
		switch(sLanguage) {
			case 'e':
				sMessage = "Field too long";
				break;
			case 's':
				sMessage = "Field too long";
				break;
			case 'd':
			default:
				sMessage = "Feldinhalt zu lang";
				break;
		}
		return sMessage + " (" + iLength + "): " + ((sShowName == "") ? string_beautify_1st(sFieldName) : sShowName)+ "\n"
	}
	else
		return ""
}

//011023 Fileextensioon von Uploadfeldern prüfen
function formcheck_filename(ofrm, sFieldName, sShowName, aExtension, sLanguage) {
	sLanguage = sLanguage || 'd';

	var bValid=false;
	var sFile = ""+ofrm.elements[sFieldName].value
	for (var i=0; i <= aExtension.length-1; i++)
		if (sFile.substr(sFile.length-3, 3).toUpperCase() == (""+aExtension[i]).toUpperCase())
			bValid=true;
	if (!bValid) {
		switch(sLanguage) {
			case 'e':
				sMessage = "Invalid type of file in field:";
				break;
			case 's':
				sMessage = "Invalid type of file in field:";
				break;
			case 'd':
			default:
				sMessage = "Ungültiger Dateityp in Feld:";
				break;
		}
		return sMessage + " " + ((sShowName == "") ? string_beautify_1st(sFieldName) : sShowName) + ".\n"
	}
	else
		return ""
}



function formcheck_leave(oFormular, sLanguage) {
	sLanguage = sLanguage || 'd';

	bMakeAlert       = false;

    switch(sLanguage) {
		case 'e':
		    sMessage = 'You have filled out some fields of the form without sending.\nDo you want to leave this page although?';
			break;
		case 's':
		    sMessage = 'You have filled out some fields of the form without sending.\nDo you want to leave this page although?';
			break;
		case 'd':
		default:
		    sMessage = 'Sie haben Daten in das Formular eingegeben, ohne dieses abzuschicken!\nMöchten Sie die Eingaben verwerfen und die Seite verlassen?';
			break;
	}

    if(window.document.getElementById(oFormular)) {
		for(iCounter1 = 0; iCounter1 < window.document.getElementById(oFormular).elements.length; iCounter1++) {
			sElements = window.document.getElementById(oFormular).elements[iCounter1];
			switch(sElements.type) {
				case 'text':
				case 'hidden':
				case 'password':
				case 'file':
				case 'textarea':
				    if(sElements.value != sElements.defaultValue) bMakeAlert = true;
					break;
				case 'radio':
				case 'checkbox':
				    if(sElements.checked != sElements.defaultChecked) bMakeAlert = true;
					break;
				case 'select-one':
				case 'select-multiple':
				    for(iCounter2 = 0; iCounter2 < sElements.options.length; iCounter2++) {
						if(sElements.options[iCounter2].selected == true && sElements.options[iCounter2].defaultSelected == false) {
							 bMakeAlert = true;
						}
					}
					break;
				case 'submit':
				case 'reset':
				case 'button':
				default:
				    break;
			}
		}
		if(bMakeAlert == true) {
			event.returnValue = sMessage;
		}
    }
}