
/**
 This file is part of aprixo-CMS(R) by osite network GmbH
 Description:
 first function looks if regular expressions are supported
 if not you need the specific value "email" for the email-function chkemail !!!
 call function inside the form-tag like: onSubmit='return chkform("value1,value2,valueN")'
 if value contains regular expression "mail" the Email-function advchkemail is called
 define a standard error-message inside an hidden field like:
 	<input type="hidden" id="stdmsg" value="Your Message" />
 and an e-mail error-message like:
 	<input type="hidden" id="mailmsg" value="No valid Email!" />
**/

function regExTest(){
	var a = false;
	if (typeof(RegExp) == 'function'){
		var b = new RegExp('abc');
		if (b.test('abc') == true){
			a = true;
		}
	}
	return a;
}

function chkform(namestring){
	var reg = regExTest();
	var msg = document.getElementById("stdmsg").value;
	var values = namestring.split(",");
	for (var i = 0; i < values.length; i++){
		if (document.getElementById(values[i]).value == "") {
			alert(unescape(msg));
			document.getElementById(values[i]).focus();
			return false;
		}
		if (reg == true){
			var isMail = values[i].search(/mail/);
			if (isMail != -1){
				return advchkemail (values[i]);
			}
		}
		if (reg == false){
			if (values[i] == "email") return chkemail(values[i]);
		}
	}
	return true;
}

function chkformByName(namestring, formobj){
	var reg = regExTest();
	var msg = 'Please fill in the marked fields';
	
	var values = namestring.split(",");
	if (typeof(formobj) == "undefined") {
		if (typeof(document.getElementsByName('gui_ctr_jsmsg')[0]) != 'undefined'){
			msg = document.getElementsByName('gui_ctr_jsmsg')[0].value;
		}
		for (var i = 0; i < values.length; i++) {
			var element = document.getElementsByName(values[i])[0];
			if (typeof(element) == "undefined") continue;
			if (!checkElement(element, msg, values, i, reg)) return false;
		}
	} else {
		if (!formobj.elements) return true;
		if (typeof(formobj.gui_ctr_jsmsg) != 'undefined') {
			msg = formobj.gui_ctr_jsmsg.value;
		}
		var elms = formobj.elements;
		for (var i = 0; i < values.length; i++) {
			for (var eli = 0; eli < elms.length; eli++) {
				var element = elms[eli];
				if (element.name == values[i]) {
					if (!checkElement(element, msg, values, i, reg)) return false;
				}
			}
		}
	}

	return true;
}

function checkElement(el, msg, ellist, i, reg){
	var radiocheck = "";
	var validmail = true;
	if (el.type=="text" || el.type=="password" || el.type=="textarea") {
		if (el.value == "") {
			alert(unescape(msg));
			el.focus();
			el.style.border = "solid red 1px";
			return false;
		}
		if (reg == true){
			var isMail = ellist[i].search(/mail/);
			if (isMail != -1){
				validmail = advchkemailGUI(el.id);
			}
		}
		if (reg == false){
			if (ellist[i].value == "email") validmail = chkemailGUI(el.id);
		}
		if (validmail == false) {
			return false;
		}
	}
	if (el.type=="radio") {
		if (radiocheck.indexOf(el.name + " ") < 0) {
			radiocheck += el.name + " ";
			eval("var radiogroup = f." + el.name);
			var ok = false;
			for (var k=0; k<radiogroup.length; k++) {
				if (radiogroup[k].checked) {
					ok = true;
				}
			}
			if (!ok) {
				alert(unescape(msg));
				el.focus();
				return false;
			}
		}
	}
	if (el.type=="select-one" || el.type=="select-multiple") {
		if (el.options[el.options.selectedIndex].value == "") {
			alert(unescape(msg));
			el.focus();
			el.style.border = "solid red 1px";
			return false;
		}
	}
	if (el.type=="checkbox") {
		var isReadconditions = el.name.search(/readconditions/);
		if (isReadconditions != -1 ) {
			if (typeof(document.getElementsByName('gui_ctr_jsmsg_gtc')[0]) != 'undefined') {
				msg = document.getElementsByName('gui_ctr_jsmsg_gtc')[0].value;
			} else msg = 'Please confirm our GTC first';
		} 
		if (el.checked == false) {
			alert(unescape(msg));
			el.focus();
			return false;
		}
	}
	return true;
	
}

function chkemail(formvalue){

	var res = false;
	var msg = document.getElementById("mailmsg").value;
	var adress = document.getElementById(formvalue).value;

	res = (adress.search('@') >= 1 && adress.lastIndexOf('.') > adress.search('@') && adress.lastIndexOf('.') >= adress.length-5)

	if (res == false){
		alert(unescape(msg));
		document.getElementById(formvalue).focus();
		//document.getElementById(formvalue).style.border = "solid red 1px";
		return false;
	}
	else return true;
}

function advchkemail(formvalue){

	var res = false;
	var msg = document.getElementById("mailmsg").value;
	var adress = document.getElementById(formvalue).value;

	reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)' + '(\\@)([a-zA-Z0-9\\-\\.]+)' + '(\\.)([a-zA-Z]{2,4})$');
	res = (reg.test(adress));

	if (res == false){
		alert(unescape(msg));
		document.getElementById(formvalue).focus();
		return false;
	}
	else return true;
}

function chkemailGUI(elementid){

	var res = false;
	if (typeof(document.getElementsByName('gui_ctr_jsmailmsg')[0]) != 'undefined'){
		var msg = document.getElementsByName('gui_ctr_jsmailmsg')[0].value;
	} else var msg = 'Please enter a valid e-mail address!';
	var adress = document.getElementById(elementid).value;

	res = (adress.search('@') >= 1 && adress.lastIndexOf('.') > adress.search('@') && adress.lastIndexOf('.') >= adress.length-5)

	if (res == false){
		alert(unescape(msg));
		document.getElementById(elementid).focus();
		document.getElementById(elementid).style.border = "solid red 1px";
		return false;
	}
	else return true;
}

function advchkemailGUI(elementid){

	var res = false;
	if (typeof(document.getElementsByName('gui_ctr_jsmailmsg')[0]) != 'undefined'){
		var msg = document.getElementsByName('gui_ctr_jsmailmsg')[0].value;
	} else var msg = 'Please enter a valid e-mail address!';
	var adress = document.getElementById(elementid).value;

	reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)' + '(\\@)([a-zA-Z0-9\\-\\.]+)' + '(\\.)([a-zA-Z]{2,4})$');
	res = (reg.test(adress));

	if (res == false){
		alert(unescape(msg));
		document.getElementById(elementid).focus();
		document.getElementById(elementid).style.border = "solid red 1px";
		return false;
	}
	else return true;
}

function chkinteger(formvalue){
	
	var res = false;
	if (typeof(document.getElementsByName('gui_ctr_intmsg')[0]) != 'undefined'){
		var msg = document.getElementsByName('gui_ctr_intmsg')[0].value;
	} else var msg = 'Bitte geben Sie eine g%FCltige Zahl ein!';
	var value = document.getElementById(formvalue).value;

	if (value != null && value != ''){
		if (isNaN(parseInt(value))){
			alert(unescape(msg));
			document.getElementById(formvalue).focus();
			//document.getElementById(formvalue).style.border = "solid red 1px";
			return false;
		}
	}
	return true;

}
