function validation(){
	if (PressedEnter) return false;
	args=validation.arguments;	
	
	if ((args.length<4) && (args.length%2==1)){
		alert("Error: Wrong number of parameters passed to validation function.");
		return false;
	}
	
	var numbers="123456789";
	var _startH="יש למלא את השדות הבאים:\n";
	var _startE="Please fill in the following fields:\n";
	
	var theForm=args[0];
	var lang=args[1];
	var fieldType,fieldCond,alrtMsg="";
	var highOr=-1;
	fieldsArr=new Array();
	//====================================
	for (i=2; i<args.length; i+=2){
		fieldType=theForm.elements[args[i]].type;
		if ((fieldType=="text") || (fieldType=="textarea") || (fieldType=="password")){
			fieldCond=(theForm.elements[args[i]].value=="")?false:true;
		} else if (fieldType=="checkbox"){
			fieldCond=theForm.elements[args[i]].checked;
		} else if ((theForm.elements[args[i]][0].type=="radio") && (theForm.elements[args[i]].length>1)){
			fieldCond=false;
			for (j=0; j<theForm.elements[args[i]].length; j++){
				if (theForm.elements[args[i]][j].checked) fieldCond=true;
			}
		} else if (fieldType=="select-one") {
			fieldCond=(theForm.elements[args[i]].selectedIndex==0)?false:true;
		}
		var k=(i-2)/2;
		fieldsArr[k]=new Array();
		if (numbers.indexOf(args[i+1].charAt(0)) != -1){
			fieldsArr[k][0]=args[i+1].substring(1,args[i+1].length);
			fieldsArr[k][1]=args[i+1].charAt(0);
		}else{
			fieldsArr[k][0]=args[i+1];
			fieldsArr[k][1]=-1;
		}
		fieldsArr[k][2]=fieldCond;
		
		//check if field should be in email form.
		if (fieldsArr[k][0].charAt(0)=="@"){
			fieldsArr[k][0]=fieldsArr[k][0].substring(1,fieldsArr[k][0].length);
			fieldsArr[k][3]=theForm.elements[args[i]].value;
		}
		else fieldsArr[k][3]="";
	}	// end for args
	//====================================
	for (i=0; i<fieldsArr.length; i++){
		if (fieldsArr[i][2]) continue;		// if value is not empty move to next iteration.
		
		if (fieldsArr[i][1]!=-1){	// if current field is optional with others, check if any of other options is filled. If not return the proper msg for the alert.
			if (fieldsArr[i][1]>highOr){
				highOr=fieldsArr[i][1];
				alrtMsg+=checkOr(fieldsArr[i][1],lang);
			}
		}else
			alrtMsg+="*   "+fieldsArr[i][0]+"\n";
	}	// end for fieldsArr
	//====================================
	// check for email field.
	for (i=0; i<fieldsArr.length; i++){
		if (fieldsArr[i][3]!="" && fieldsArr[i][2]){
			if (!emailChecker(fieldsArr[i][3]))
				if (lang=="H") alrtMsg+="\nכתובת הדואר אלקטרוני אינה נכונה\n";
				else alrtMsg+="\nThe Email address is incorrect\n";
			break;	//break for loop after finding email address.
		}
	}
	//====================================
	if (alrtMsg!=""){
		if (alrtMsg.indexOf("*")!=-1)
			if (lang=="H") alrtMsg=_startH+alrtMsg;
			else alrtMsg=_startE+alrtMsg;
		if (lang=="H"){
			fixHebrew(alrtMsg);
		} else {
			if (document.all && document.dir == "rtl"){
				__alrt_ltr.alert(alrtMsg);
			} else {
				alert (alrtMsg);
			}
		}
		return false;
	}
	
	return true;
}	/*end function*/

function checkOr(orNum,lang){
	var _orH=" או "; var _orE=" or ";
	var msgLine="";
	var countTimes=0;
	var haveValue=false;
	for (j=0; j<fieldsArr.length; j++){
		if (fieldsArr[j][1]==orNum){
			if (fieldsArr[j][2]) haveValue=true;
			if (countTimes==0) msgLine="*   "; 
			else
				if (lang=="H") msgLine+=_orH;
				else  msgLine+=_orE;
			msgLine+=fieldsArr[j][0];
			countTimes++;
		}
	}
	msgLine+="\n";
	if (haveValue) return "";
	else return msgLine;
}

/* Validate that a string is email like*/
function emailChecker(getEmail){
	var sEmail=getEmail.toLowerCase();
	if (sEmail.indexOf("@")==-1) return false;
	if (sEmail.indexOf(".")==-1) return false;
	if ((sEmail.charAt(sEmail.length-1)=="@") || (sEmail.charAt(sEmail.length-1)==".")) return false;
	if ((sEmail.charAt(0)=="@") || (sEmail.charAt(0)==".")) return false;
	return true;
}

function fixHebrew(alrtMsg){
	if (document.all) __alrt.alert(alrtMsg);
	else alert(alrtMsg);
}

/* prevent submitting the from on Enter*/
var NS4 = (document.layers);
var PressedEnter=false;

if (NS4) document.captureEvents(Event.KEYPRESS | Event.MOUSEUP);
document.onkeypress = doKey;
document.onmouseup=cancelEnter;

function cancelEnter(){
	PressedEnter=false;
}

function doKey(e) {
	whichASC = (NS4) ? e.which : event.keyCode;
	if (whichASC==13) PressedEnter=true
	else PressedEnter=false;
}

if (document.all){
	document.writeln("<iframe name='__alrt' src='/js/validation_fh.html' width='1' height='1' scrolling='no' style='visibility:hidden' dir='rtl'></iframe>");
	if (document.dir == "rtl") document.writeln("<iframe name='__alrt_ltr' src='/js/validation_fe.html' width='1' height='1' scrolling='no' style='visibility:hidden'></iframe>");
}
