
var requiredlist	= new Array();
var requiredlist_or	= new Array();
var errorlist  = new Array();
var errorlist_or = new Array();
var exclusivelist = new Array();

function submitSurvey()
{
    var i,j;
    var error;
    var error_e;
    var answers = eval("document.surveyForm.getElementsByTagName('INPUT')");
    
    error =false;   
  
  	// require fields AND : work for radio, checkbox only.     	
  	for(i in requiredlist){
  		var fields = requiredlist[i].split("," );  		
  		var found = false;
  		var error_e = false;  	
  		for (j=0; ((j< fields.length -1) && (!error_e)) ; j++) {
  			var elm = eval("document.getElementById('" + fields[j] + "')");  				  			
  			if  (elm.checked){ // has selected
  				// check whether it is same as the exclusivelist
  				found = true;
  				if (exclusivelist[i] != null ) {  // the selected is not the same as exclusive				
  					if ( fields[j] != exclusivelist[i]) {
  						var elm_x = eval("document.getElementById('" + exclusivelist[i] + "')");
  						if  (elm_x.checked){ 
  							//the exclusive item is also checked   						  																									
  							error_e = true;
  						}
  					}
  				}  				
  			}
  		} //for
  		
  		var err = eval("document.getElementById('" +  errorlist[i] +"')");  
  		if (!found) {
  			//set the error text  			  			
  			if (!error){
  				var errfield1 =  eval("document.getElementById('" + fields[0] + "')"); 			 
  				errfield1.focus();
  			} 
  			err.style.display='inline';	 
  			err.innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;Please select at least one of the following options.<br>';
  			error = true;
  		}
  		else { //FOUND
  			if  (error_e)  {  		  				
  				if (!error) {		
  					var errfield2 =  eval("document.getElementById('" + fields[0] + "')"); 			 
  					errfield2.focus();   				
  				}   				
  				err.style.display='inline';  				 
  				err.innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;&quot;None of the above&quot; should be exclusively selected.<br>'  ;  				  				
  				error= true;
  			}
  			else {  			
  				err.style.display='none';	
  			}
  		} 	
  	} // for  	
  	  	
  	// require fields OR checking. Work for Textbox only
  	for(i in requiredlist_or){
  		var found_or = checkOrTextFields(requiredlist_or[i]);
  		if (requiredlist_or[i].length >0) {	  		  	
  			if (!found_or) {
  				var err_1 = eval("document.getElementById('" + errorlist_or [i] + "')"); 	
  				err_1.style.display='inline';	
  				err_1.innerHTML = '&nbsp;&nbsp;&nbsp;&nbsp;Please enter contact information.<br>' ; 
  				error= true;		
  			} 
  					  			  			
  		}
  	}
 
 //data validation check
  	if (answers) {
    	for (i=0; i<answers.length; i++) {
  			var answer = answers[i];  			  			
  			if (answer.type == "hidden" && answer.className == "validation"){  
  				var vtype = answer.value;																		
				var eid = "ans" +  answer.id.substring(answer.id.indexOf('_'));
				var checkobj = eval("document.getElementById('" + eid + "')");							
				if (checkobj) {
					var errobj;
					errobj = eval("document.getElementById('err" + answer.id.substring(answer.id.indexOf('_')) +"')");	

					if (vtype==0) {								
						if ( !checkInputChar(checkobj,errobj)){
							
							error = true;		
						}
					}
					if (vtype==1) {								
						if ( !checkEmailSyntax(checkobj)){
							
							errobj.style.display='inline';	
							errobj.innerHTML ="Please enter a valid email address"
							error = true;		
						}
						else {
							errobj.style.display='none';
						}
					}
					else if (vtype==2) {								
						if ( !checkPhoneSyntax(checkobj)){
							
							errobj.style.display='inline';	
							errobj.innerHTML ="Please enter a valid phone number"
							error = true;		
						}
						else {
							errobj.style.display='none';
						}
					}
				}					
   			}   			
  		}
  	}     	     	     	  
   	
   	var topmsg =  document.getElementById('msgtop');   	  	  
   	if (error) {		
		topmsg.style.display='inline';
		topmsg.focus(); 		
  		return false;		
  	} 
  	else { 
  		var	form_submitted;  	
  		//topmsg.style.display='none';  
  		form_submitted = document.surveyForm.h_submitted.value;
  		//alert(form_submitted );
  		if (form_submitted == 0){ //no multiple submit
  			document.surveyForm.h_submitted.value = 1;		
  			document.surveyForm.submit();	  		  		  	
  		}
  		else {
  			alert("Your survey response has been recorded.  Thank you.");
  		}
  		return true;
    }

}

function showblock (fieldsetno,y_n, dlist, id) {
	
	var blockobj = eval("document.getElementById('FS_" + fieldsetno + "')");		
	if (blockobj) {
		var err = eval("document.getElementById('" + errorlist_or [id] + "')"); 	
		if (y_n==1) {
			blockobj.style.display='inline';
			requiredlist_or[id]=dlist;  
			surveyForm.h_y_n.value='Y';									
		}
		else {
		    // clear textbox inside the fieldset
		    var fields = dlist.split("," );  		
		    var i;
		   
		    for (i=0; i< fields.length ; i++){ // clean up...
				var elm = eval("document.getElementById('" + fields[i] + "')");  		 
				elm.value ='';
				
				var t =  'err' + fields[i].substring(fields[i].indexOf('_'));
				var d_errobj = document.getElementById(t);
				d_errobj.style.display='none';		
				d_errobj.innerHTML='';
						
		    }
			blockobj.style.display='none';
			requiredlist_or[id]=""; 
						
			err.style.display='none';
			err.innerHTML='';
			surveyForm.h_y_n.value='N';	
		}
	}
}
		
function checkEmailSyntax(obj) {
		
		if (obj.value==null || obj.value=="")  {
			return true;
		}	
		var objRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
		return objRegExp.test(obj.value);	

}

function checkPhoneSyntax(obj) {
		if (obj.value==null || obj.value=="")  {
			return true;
		}	
		var objRegExp = /^([0-9]){3}\-([0-9]){3}\-([0-9]){4}(e[0-9]{1,5}){0,1}$/;
		return objRegExp.test(obj.value);	
}

function checkInputChar(obj, errobj) {
  var invChars = /['"=|]/;
  if (obj.value==null || obj.value=="")  {
	errobj.style.display='none';
	return true;
  }	
  var invChar;    
  if (invChar=obj.value.match(invChars)){	
		//alert("Your text cannot contain this special character: "+invChar);
		//obj.focus();
		errobj.style.display='inline';	
		errobj.innerHTML ="Your text cannot contain character "+invChar;
		return false;
  }  
  else {
	errobj.style.display='none';	
  }
  return true;
}

function checkOrTextFields(dlist){

	var found = false;
	if (dlist.length > 0 ) {
		var fields = dlist.split("," );  		
		var k;	
		for (k=0; k< fields.length && !found; k++){
			var elm = document.getElementById(fields[k]);
			if ((elm.value !=null) && (elm.value!="")) {
				found = true;
			}				
		}	
	}
	
	return found;
}


