// JavaScript Document


function validate_field_contents(form, doc){
	var elem;
    var errs=0;
	var map_1 = new Array();
	var map_2 = new Array();
	for(i=0;i<form.elements.length;i++){
		input_invalid = false;
		element = form.elements[i];
		if(element.type.search(/hidden/i) != -1){
			g_index = element.id.search(/group_/i);
			if(g_index != -1){
				group_name = element.id.substring(g_index, element.id.length);
				element_id = doc.getElementById(element.value);
				map_1.push(element.id);
				if(!is_empty(element_id.value)){
					map_2.push(element.id);
				}

			}
		}
		else{
			id = element.id;
			index_validation_type = doc.getElementById(id+""+"_validation_type");
			index_required = doc.getElementById(id+""+"_required");
			if(index_validation_type != null){
				if(index_validation_type.value.search(/email/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!is_valid_email(element.value)){
						input_invalid=true;
						errs++;
						if(error_element != null){
							error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
				if(index_validation_type.value.search(/phone/i) != -1){
					error_element = doc.getElementById("invalid_value_"+id);
					if(!is_valid_phone(element.value)){
						input_invalid=true;
						errs++;
						if(error_element != null){
							error_element.style.display="block";
							errs++;
						}
					}
					else{
						error_element.style.display="none";
					}
				}
			}
			if(index_required != null){
				if(index_required.value.search(/true/i) != -1){
					error_element = doc.getElementById("required_"+id);
					if(is_empty(element.value)){
						input_invalid=true;
						errs++;
						
						if(error_element != null){
								error_element.style.display="block";
								errs++;
						}
					}
					else{
						error_element.style.display="none";
					}	
				}
			}
			
			
		}
	}

	for(j=0;j<map_1.length;j++){
		is_group_fulfill = false;
		for(k=0;k<map_2.length;k++){
			if(map_1[j]==map_2[k]){
				is_group_fulfill=true;
				break;
			}
		}
		if(is_group_fulfill){
			doc.getElementById("div_" + map_1[j]).style.display="none";
		}
		else{
			errs++;
			doc.getElementById("div_" + map_1[j]).style.display="block";
		}
	}
	
	
	return errs;
}

function validateOnSubmit_resgisterUser(form, doc) {
	return validateOnSubmit(form, doc);
}
// Only script specific to this form goes here.
// General-purpose routines are in a separate file.
function validateOnSubmit(form, doc) {
	var errors=0;
	errors+=validate_field_contents(form, doc);
	//errors+=check_required(form, doc);
	//if (errors>1)  alert('There are fields which need correction before sending');
	//if (errors==1) alert('There is a field which needs correction before sending');
	return (errors==0);
}

function is_empty(value){
	if(value=="")
		return true;
	return false;
}

function is_valid_email(email){
	
	if(email=="")
		return false;
	
	var tfld = trim(email);  // value of field with whitespace trimmed off
  var emailx = /^[^@]+@[^@.]+\.[^@]*\w\w$/
  if (!emailx.test(tfld)) {
    return false;
  }

  var email2 = /^[A-Za-z][\w.-]+@\w[\w.-]+\.[\w.-]*[A-Za-z][A-Za-z]$/
  if (!email2.test(tfld)){ 
    //alert("mail aparentement invalido");
  }
  else{
    
  }
  return true;
	
}

function is_valid_phone(phone){
	if(phone=="")
		return true;//TODO optional
	var value = trim(phone);
	var phone_mask = /^\+?[0-9]+[0-9]+$/;
	if(!phone_mask.test(value)){
		//alert(value);
		return false;
	}
	var phone_number_length = value.length;
	if(phone_number_length < 9){
	//alert("length " + phone_number_length);
		return false;
	}
	return true;
}

function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '')
};



