// Validate
function Validate(id) {
  var f=document.getElementById(id);
  var Errors=new Array();
  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 (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=='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+" must be selected 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=='required-group') {
        var group = f.elements[i].getAttribute('group');
				var count = f.elements[i].getAttribute('count');
				var limit = f.elements[i].getAttribute('limit');
				var fullvalue = '';
        if (Value.length==0)
          Errors[Errors.length]="Please complete the full "+Title+".";
				else{
					for(v=1; v<=count;++v){
						var gObj = document.getElementById(group+v);
						if(gObj.value !='undefined'){
							fullvalue+=gObj.value;
						}
					}
				if (fullvalue.length<limit)
          Errors[Errors.length]="Please complete the full "+Title+".";
				}
      }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 (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;
	}
}

// Validate
function ValidateSubscription(id) {
  var f=document.getElementById(id);
  var Errors=new Array();
	var Subscriber = document.getElementById('subscription_1').checked?false:true;
	var Gift = document.getElementById('giftSubscription_1').checked?false: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;
			var Only = f.elements[i].getAttribute('only')?f.elements[i].getAttribute('only'):false;
      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((Only && Only=='gift' && Gift) || (Only && Only=='subscriber' && Subscriber) || !Only)
				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=='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+" must be selected 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=='required-group') {
					var group = f.elements[i].getAttribute('group');
					var count = f.elements[i].getAttribute('count');
					var limit = f.elements[i].getAttribute('limit');
					var fullvalue = '';
					if (Value.length==0)
						Errors[Errors.length]="Please complete the full "+Title+".";
					else{
						for(v=1; v<=count;++v){
							var gObj = document.getElementById(group+v);
							if(gObj.value !='undefined'){
								fullvalue+=gObj.value;
							}
						}
					if (fullvalue.length<limit)
						Errors[Errors.length]="Please complete the full "+Title+".";
					}
				}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 (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;
	}
}

