//hide fields at start of page
function hideFields(blnHide) {
	if (!blnHide) {
		document.getElementById("sHearAboutOther").style.display = 'inline'
	} else {
		document.getElementById("sHearAboutOther").style.display = 'none'
	}
}

//hiding/showing fields according to selections
function displayField(obj) {
	if (obj.options[obj.selectedIndex].value=='sHearAboutOT') {
		document.getElementById("sHearAboutOther").style.display = 'inline'
	} else {
		document.getElementById("sHearAboutOther").style.display = 'none'
	}
}

//JavaScript validations for patients survey
function checkForm_survey_patient(thisform) {
    var returnval
    
    //first check required fields
    returnval = checkForm_survey(thisform);
    
    if (returnval) {
		//then check special rules
		if (formElementsValue(thisform, "sHearAbout")=='sHearAboutOT' && formElementsValue(thisform, "sHearAboutOther")=='') {
			returnval = RuleViolation(thisform, "V2", "You chose OTHER from the how did you hear about us, please specify.")
			
			thisform["sHearAboutOther"].focus();
			
			return returnval
		}
    }
    return returnval
}

//JavaScript alerts for required and numeric fields
function checkForm_survey(thisform) {	
	var returnval=false;
	
	if (checkFormRequired(thisform)){
		returnval=true;
	}				
			 	
	return returnval;	
}

///////////////////////////////////
function checkFormRequired(thisform) {	//checks if a required field is empty
	var returnval=true;
	for (var j=0; j<(thisform.elements.length); j++) {
        var indx = thisform.elements[j].name.indexOf('_brauchma');
        if (indx != -1) {						
            fieldname=thisform.elements[j].name.substring(0,indx);		
				
			var alerttext = insertLineFeeds(thisform.elements[j].value)
								
			if (thisform.elements[fieldname].type == null) {
				if (thisform.elements[fieldname][0].type != null) {
					if (thisform.elements[fieldname][0].type == 'radio') {
						var nothingChecked = true
						for (var nr=0; nr<(thisform[fieldname].length); nr++) {
							if (thisform[fieldname][nr].checked) {
								nothingChecked = false
								nr = (thisform[fieldname].length)
							}					
						}
						if (nothingChecked) {
						    alert(alerttext);

							j = thisform.elements.length
							thisform[fieldname][0].focus();
		                    returnval = false;
		                }		
					}		
				}
			}
			else if ((thisform.elements[fieldname].type.substring(0,6)) == 'select') {
				if (thisform.elements[fieldname].options[0].selected) {
				    alert(alerttext);
					j = thisform.elements.length
					thisform[fieldname].focus();
                    returnval = false;
				}
			}
			else
			{	// text or textarea			
                if (trim(thisform.elements[fieldname].value).length == 0) {
				    alert(alerttext);
					j = thisform.elements.length
					thisform[fieldname].focus();
                    returnval = false;
                }
			}			
        }
	}
	return returnval;
}

////////////////////////////////////////////////
function insertLineFeeds(alerttext) {	//check if line feeds have to be inserted in alerttext
	var indx = alerttext.indexOf('§§');	
	while (indx != -1) {
		alerttext = alerttext.substring(0,indx) + "\n" + alerttext.substring(indx+2,alerttext.length);
		indx = alerttext.indexOf('§§');
	}
	return alerttext;
}


////////////////////////////////////////////////
//trim functions for string operations
function ltrim(str) { 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}
function rtrim(str) {
	for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
	return str.substring(0,j+1);
}
function trim(str) {
	return ltrim(rtrim(str));
}
function isWhitespace(charToCheck) {
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}

//common functions for page rules/////////////				
function formElementsValue(thisform, ele) { //returns the value of the element ele
	var returnval=0		
		
	if (thisform.elements[ele].type == null) {
		if (thisform.elements[ele][0].type != null) {
			for (var nr=0; nr<(thisform[ele].length); nr++) {
				if (thisform[ele][nr].checked) {
					returnval = thisform[ele][nr].value		
				}
			}
		}
	}
	else if (thisform.elements[ele].type.substring(0,6) == 'select') {			
		returnval=""
		for (var nr=0; nr<(thisform[ele].length); nr++) {
			if (thisform[ele].options[nr].selected) {
				if (returnval=="") 	returnval=thisform[ele].options[nr].value
				else returnval=returnval+","+thisform[ele].options[nr].value
			}
		}
	}
	else if (thisform.elements[ele].type == 'checkbox') {
		if (thisform.elements[ele].checked) returnval = thisform[ele].value
		else returnval = 0
	}
	else returnval = trim(thisform[ele].value)
		
	return returnval
}

////////////////////////////////////////////
function RuleViolation(thisform, ele, fbtext) { //page rule failed - alert fbtext and set focus
	alert(insertLineFeeds(fbtext))
		
	if (thisform[ele] != null) {
		if (thisform.elements[ele].type == null) {
			if (thisform.elements[ele][0].type != null) {
				thisform[ele][0].focus()	
			}
		}
		else {
			thisform[ele].focus()				
			if (thisform[ele].type == 'text' || thisform[ele].type == 'textarea') {		
				thisform[ele].select()		
			}
		}
	}
	
	return false;
}
