/*
 * XmMailEvent.java 
 * (c) xmachina GmbH, Heidelberg.
 * All rights reserved. Alle Rechte vorbehalten.
 *
 * xmachina und das xmachina-Logo sind eingetragene
 * Warenzeichen der xmachina GmbH, Heidelberg.
 *
 * xmachina and the xmachina logo are registered
 * trademarks of xmachina GmbH, Heidelberg, Gemany.
 * 
 */



function validateContactForm(myForm) {		
	
	// Element validation
	// Element Standard Kontaktfelder
	
	var message = "";
	var errors = 0;
	
	//with (myForm) {
	
		var language = myForm.lang.value;
	
		var requiredFields = new Array(
								myForm.anrede,
								myForm.form,		// eins muss ausgewählt sein, weil damit das Ziel-Formular in xmMail2 angesprochen wird
                                myForm.vorname,
								myForm.nachname,
								myForm.plz,
								myForm.ort,
								myForm.land,
								myForm.email
								);
		
		errors = validate(requiredFields);

        doLog('Fehler nach 1. Validierung: ' +  errors);
	
		errors += validateAdditionalFields(myForm);
		doLog('Fehler nach 2. Validierung: ' +  errors);

		// Error handling
		if (errors > 0) {
			if (myForm.lang.value == 'ger') {
				alert('Bitte fuellen Sie alle Pflichtfelder aus.');
			} else {
				alert('Please fill out all required fields.' + message);
			}
			return false;
		}
		else {
		
			return true;
		}		
	//}

}

	function validateOrderForm(myForm) {
		
		var errors = 0;
		
		//with (myForm) {
		
			var language = myForm.lang.value;
            //var lang = 'ger'; 
		
			var requiredFields = new Array(                 
									myForm.anrede,
									myForm.count,
									myForm.customizing,
	                                myForm.vorname,
									myForm.nachname,
									myForm.firma,
									myForm.strasse,
									myForm.strasse_nr,
									myForm.plz,
									myForm.ort,
									myForm.land,
									myForm.telefon,
									// myForm.telefax,
									myForm.email
									);
			
			errors = validate(requiredFields);

	        doLog('Fehler: ' +  errors);
		

			// Error handling
			if (errors > 0) {
				if (myForm.lang.value == 'ger') {
					alert('Bitte fuellen Sie alle Pflichtfelder aus.');
				} else {
					alert('Please fill out all required fields.');
				}
                                doLog('return false');
				return false;
			}
			else {
                              doLog('return true');
                              return true;
			}		
		//}	
	}



// Validates the given input field
function validate(elements) {

	var errors = 0;
	
	for ( var i=0; i<elements.length; i++ ) {
		
		var error = false;
		var el    = elements[i]; 
		
		var isarr = ( el.length > 0  && el.type != 'select-one' ) ? true : false;
		
		//Debugging
		if (isarr)
			doLog('proof elArray ' +  i + ', name: '+el[0].name+', type: ' + el[0].type + ', Errors found: ' + errors);
		else
			doLog('proof el ' +  i + ', name: '+el.name+', type: ' + el.type + ', Errors found: ' + errors);
		

		
		if (  el.length > 0  && el.type != 'select-one' ) {  // Element ist Array (Radio oder Checkboxes)
		
			var checked = false;
				
			for ( var x=0; x<el.length; x++ ) { if (el[x].checked) checked = true;	}
				
			if ( !checked ) {  error = true; } 
				
			el = el[0].parentNode;
                 
				
		} else {
		
			switch (el.type) {
			
				case 'radio': if ( !el.checked ) {  error = true; } el = el.parentNode; break;
			
				case 'select-one':
				case 'select': if (el.selectedIndex == 0) error = true; break;
				
				default: 
				
					if (el.value == "") error = true;
					
					if (el.name == "email" && !checkEmail(el.value)) error = true;
				
			}
		}
		
		
		if (error) {
			highlightElement(el)
			errors++;
		} 		
		else {
			dehighlightElement(el);
		}
	}
	
	return errors; 

}



// Validates the given email address
function checkEmail(s) {

	var a = false;
	var res = false;
	
	if(typeof(RegExp) == 'function') {
  		var b = new RegExp('abc');
  		if(b.test('abc') == true){a = true;}
  	}
	
  	if(a == true) {
		reg = new RegExp('^([a-zA-Z0-9\\-\\.\\_]+)'+
			'(\\@)([a-zA-Z0-9\\-\\.]+)'+
			'(\\.)([a-zA-Z]{2,4})$');
		res = (reg.test(s));
	} else {
		res = (s.search('@') >= 1 &&
			s.lastIndexOf('.') > s.search('@') &&
			s.lastIndexOf('.') >= s.length-5)
	}
	
	doLog('element is E-Mail, proof email is valid: ' +  res);
	
	return(res);
}


// Highlights a required field
function highlightElement(el) {

	el.style.backgroundColor = "#FFFF99";
	el.style.border = "1px solid red";
	
}

// De-Highlights a required field
function dehighlightElement(el) {
	
	try {
		el.style.backgroundColor = (el.nodeName != 'DIV' && el.nodeName != 'LABEL') ? "#FFFFFF" : "transparent";
		el.style.border = (el.type == "select" || el.type == "select-one") ? "1px solid #D9D9D9" : "medium none";
                doLog('nodeName: ' + el.nodeName);
		
	} catch(e) {
		//alert('Error in Function dehighlightElement: ' + e);
	}
}


function doLog(message) {
	try { console.log(message); } 
	catch (e) {	};
}




