// Validate
function Validate(id, confirmemail) {//requires finding form-type
  var f=document.getElementById(id);
  var Errors=new Array();
	var GroupChecking = CheckGroup();
	if(GroupChecking){
		var formtype = document.getElementById('form-type');
		formtype = formtype.options[formtype.selectedIndex].value;
	}else
		var formtype = false;
	var ContinueValidation = true;
  for (var i=0; i<f.length; i++) {
    if(f.elements[i].getAttribute('hint')) {
      if(f.elements[i].value==f.elements[i].getAttribute('hint')) {
        f.elements[i].value='';
      }
    }
    if (f.elements[i].getAttribute('validate')) {
      var Name=f.elements[i].name;
      if(f.elements[i].value!='undefined') var Value=f.elements[i].value;
      var Title=f.elements[i].title;
      var Req=f.elements[i].getAttribute('validate');
			if(formtype)
				ContinueValidation = CheckElementInGroup(formtype, f.elements[i]);
      if(ContinueValidation)//continue checking for validation
				if (Req=='required') {
					if (Value.length==0)
						Errors[Errors.length]="Please fill in the "+Title+".";
					else if ((Name=='firstName' && Value=='First Name') || (Name=='lastName' && Value=='Last Name'))
						Errors[Errors.length]="Please fill in the "+Title+".";
				}
				else if (Req=='email' || Req=='required-email') {
					if (Value.indexOf('@')<1)
						Errors[Errors.length]="Please enter a valid email address for the "+Title+".";
					else{
						if(f.elements[i].getAttribute('confirm')){
							var compareWith = f.elements[i].getAttribute('confirm');
							if(Value != document.getElementById(compareWith).value){
								Errors[Errors.length]="The email and email confirm do not match.";
							}
						}else if(document.getElementById('email_confirm').value){
							confirmemail = true;
						}
					}
				}
				else if (Req=='required-checked') {
					if (!f.elements[i].checked)
						Errors[Errors.length]="The "+Title+" checkbox must be checked before proceeding.";
				}
				else if (Req=='required-select') {
					if (f.elements[i].options[f.elements[i].selectedIndex].value==-1 || f.elements[i].options[f.elements[i].selectedIndex].value=="-1")
						Errors[Errors.length]="Please select a valid "+Title+".";
				}
				else if (Req=='required-limit') {
					var limit = f.elements[i].getAttribute('limit');
					if (Value.length<limit)
						Errors[Errors.length]="Your "+Title+" must be at least "+limit+" characters.";
				}else if(Req=='confirm'){
					var compareWith = f.elements[i].getAttribute('confirm');
					if(Value != document.getElementById(compareWith).value){
						Errors[Errors.length]="The "+Title+" and "+Title+" confirm do not match.";
					}
				}
			}
   // if(f.elements[i].getAttribute('hint')) {
   //   if(f.elements[i].value=='') {
   //     f.elements[i].value=f.elements[i].getAttribute('hint');
   //   }
   // }
  }
  if(confirmemail && (document.getElementById('email').value != document.getElementById('email_confirm').value)) {
    Errors[Errors.length]="Please ensure both email address fields match";
  }
  if (Errors.length > 0) {
    var Intro='The following errors occurred while trying to submit the form. Please correct them and try again.';
    var Msg='';
    var FE=document.getElementById('FormErrors');
    if (FE) {
      Msg+='<p><strong>'+Intro+'</strong></p>\n<ul>\n';
      for (var i=0; i<Errors.length; i++)
        Msg+='<li>'+Errors[i]+'</li>\n';
      Msg+='</ul>\n';
      document.getElementById('FormErrors').style.display='block';
      document.getElementById('FormErrors').innerHTML=Msg;
      document.location.href="#FormErrors";
    }
    else {
      Msg+=Intro+'\n\n';
      for (var i=0; i<Errors.length; i++)
        Msg+=Errors[i]+'\n';
      alert(Msg);    
    }
    
    for (var i=0; i<f.length; i++) {
      if(f.elements[i].getAttribute('hint')) {
        if(f.elements[i].value=='') {
           f.elements[i].value=f.elements[i].getAttribute('hint');
        }
      }
    }
    
    //showHints();
    if(typeof(window.event)!='undefined')
      window.event.returnValue = false;
      
    return false;
  }else{
    return true;
	}
}

function CheckGroup(){//true = check if in group | false = continue without checking
	var validateGroups = new Array('inquiry','event','giftsong','musicgram');
	if(document.getElementById('form-type')=='undefined')
		return false;
		
	var formtype = document.getElementById('form-type');
	var inarray = false;
	for(var i=0; i<validateGroups.length; ++i){
		if(validateGroups[i]==formtype.options[formtype.selectedIndex].value)
			inarray=true;
	}
	
	return inarray;
}

function CheckElementInGroup(formtype, element){
	if(formtype == false) 
		return true;//continue validating
	
	var g = element.getAttribute('group');
	if(g =='all' || g=='undefined' || g=='')
		return true;//continue validating as it is required on all form types
	
	var Group = new Array();
	Group = g.split('|');
	if(Group.length==0)
		return true;//continue validating
		
	var validate = false;
	for(var i=0; i<Group.length; ++i){
		if(Group[i]==formtype)
			validate=true;
	}
	
	return validate;	
}

