﻿function jsMarkRequiredFields(f,language){
	if(f==undefined)return;
	jsDataValidation(f,true,language,0);
}

function jsDataValidation(f,MarkAsRequiredOnly,language){

	fld=new Array(100);
	err=new String("");
	valid=new String("");

	errnumber=jsDataValidation.arguments[jsDataValidation.arguments.length-1];
	if(errnumber==language)errnumber=0;
	
	err="";
	valid="";
	
	// do we have a validation error box in the form?
	s=document.getElementById("validation-error");
	if(s!=null)errbox=true;else errbox=false;
	for(i=0;i<fld.length;i++){fld[i]="";}	// preset array
	
	emailfield="";
	switch(f.id){
		case "formsample":	
			// contact details
			fld[0]="firstname";
			fld[1]="surename";
			fld[2]="jobtitle";
			fld[3]="email";
			
			// company details
			fld[10]="company";
			fld[11]="address1";
			fld[12]="pcd";
			fld[13]="city";
			break;
		case "formregistration":
			fld[0]="username";
			fld[1]="pwd";
			fld[2]="pwd-retyped";
			break;
		case "formcareers":
			fld[0]="contact";
			fld[1]="comments";
			break;
		case "scaform":
			fld[0]="contact";
			fld[1]="email";
			break;
		case "formpartnership":
			fld[0]="contact";
			fld[1]="phone";
			fld[2]="area_of_interest";
			break;
		case "loginform":
			fld[0]="login_form_username";
			fld[1]="login_form_password";
			break;
		default:
			return;
			break;
	}

	// build string out of array entries
	for(i=0;i<fld.length;i++){
		if(fld[i]!=""){if(f.elements[fld[i]].value=="")err+=fld[i]+"|";else valid+=fld[i]+"|";}
	}


	///////////////////////////////////////////////////////
	// Special fields (e.g. checkbox, option group, ...)
	///////////////////////////////////////////////////////

	switch(f.id){
		case "formsample":	
			//fldname="?????";if(f.elements[fldname].checked==false)err+=fldname+"|";else valid+=fldname+"|";
			break;
		case "formregistration":	
			break;
		case "formcareers":
			break;
		case "scaform":
			break;
		case "formpartnership":
			break;	
		case "loginform":
			break;
		default:
			return;
			break;
	}
	
	///////////////////////////////////////////////////////
	// Mark as mandatory fields only?
	///////////////////////////////////////////////////////

	if(MarkAsRequiredOnly==true){
		for(i=0;i<fld.length;i++){
			if(fld[i]!=""){
				//f.elements[fld[i]].style.borderLeftWidth="5px";
				switch(language){
					case "EN":
						f.elements[fld[i]].style.borderLeftColor="#ff0000";
						break;
					case "AR":
						f.elements[fld[i]].style.borderRightColor="#ff0000";
						break;
				}
			}
		}
		return;
	}

	///////////////////////////////////////////////////////
	// reset prev. marked fields
	///////////////////////////////////////////////////////

	var validarr=valid.split("|");
	for(i=0;i<validarr.length-1;i++){
		f.elements[validarr[i]].style.borderColor="#eeeeee";	
		switch(language){
			case "EN":
				f.elements[validarr[i]].style.borderLeftColor="#ff0000";
				break;
			case "AR":
				f.elements[validarr[i]].style.borderRightColor="#ff0000";
				break;
		}
		// Exceptions/Specials
		switch(f.id+"."+validarr[i]){
			case "formsample.tc":
				//document.getElementById("tc-label").style.color="#7c7c7c";
				break;
		}
	}
	if(err==""){
		errnumber=0;
		if(errbox==true){
			document.getElementById("validation-error").style.position="absolute";
			document.getElementById("validation-error").style.top="-1000px";
		}
		
		// no missing field? Now execute any special data validation 
		switch(f.id){
			case "formregistration":	
				return(jsDataValidation_formregistration(f));
				break;
			case "scaform":
				// email validation check
				if(jsCheckEMail(f.elements["email"].value)==false)errnumber=900;
				break;
			case "formpartnership":
				// email validation check
				if(f.elements["email"].value!=""){
					if(jsCheckEMail(f.elements["email"].value)==false)errnumber=900;
				}
				break;
		}

		if(errnumber==0)return(true);
	}

	///////////////////////////////////////////////////////
	// Mark missing fields
	///////////////////////////////////////////////////////
	
	var errarr=err.split("|");
	for(i=0;i<errarr.length-1;i++){
		f.elements[errarr[i]].style.borderColor="#ff0000";	
		// Exceptions/Specials
		switch(f.id+"."+errarr[i]){
			case "formsample.tc":
				//document.getElementById("tc-label").style.color="#ff0000";
				break;
		}
	}

	switch(errnumber){
		case 0:	
			msg="<b>Not all required fields are filled out!</b><br />Please review all fields marked with * and enter the requested information.";
			break;
		case 1:
			msg="Sorry! Please complete the mandatory fields.";
			break;
		case 900:		// Email format is wrong
			msg="Please review the format of your entered email address (Example: john@domain.com)";
			break;
	}
	if(errbox==true){
		document.getElementById("validation-error-text").innerHTML=msg;
		document.getElementById("validation-error").style.position="relative";
		document.getElementById("validation-error").style.top="0px";
	}
	
	if(err!=""){
		alert("The data validation check found "+((errarr.length)-1)+" missing fields. Please enter the data in all red-marked fields to continue.");
	}else{
		alert(msg);	
	}
	document.location.href="#pagetop";
	return false;
}

// adds/removes the default text value in the login related fields
function jsFieldHandleDefaultValue(cmd,objid,language){
	
	var defaultval="";

	obj=document.getElementById(objid);
	switch(objid){
		case "searchtext":case "searchtext2":
			switch(language){
				case "en":defaultval="Search Atheeb";break;
				case "ar":defaultval="البحث";break;
			}
			break;
	}	

	switch(cmd){
		case "in":
			if(obj.value==defaultval)obj.value="";				
			break;
		case "out":
			if(obj.value=="")obj.value=defaultval;				
			break;
	}	
}

// does submit the searchform-content
function jsPerformSearch(){
	if((document.getElementById("searchtext").value=="Search Atheeb")||(document.getElementById("searchtext").value=="البحث"))return;
	document.search.submit();
}

function jsCheckEMail(str){
	var posKA=str.indexOf("@");
	if (posKA<1) return false;

	var posP=str.lastIndexOf(".");
	if (posP<posKA+2) return false;
	if (posP>str.length-2) return false;
	return true;
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// FORM-SPECIFIC VALIDATIONS
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////

function jsDataValidation_formregistration(f){
	
	var err="";
	
	// check password match
	if(f.elements["pwd"].value!=f.elements["pwd-retyped"].value){err+="Sorry the passwords you’ve entered do not match, please enter again.<br />";}

	// check username length
	var s=f.elements["username"].value;
	if(s.length<4){err+="The username must be at least 4 characters.<br />";}


	// error? Show error box
	if(err!=""){
		document.getElementById("validation-error-text").innerHTML=err;
		document.getElementById("validation-error").style.position="relative";
		document.getElementById("validation-error").style.top="0px";
		document.location.href="#pagetop";
	}
	return (err=="");
	
}
										