var survey_message ="";
var survey_error=false;
var survey_error2=false;


/* VERSION 1.04*/

/* CHECK ALL FORM RULES */
function checkform(sform){
	survey_message="";
	survey_error="";
	
	
	var groups = $$('div.group_holder');
	groups.each(function(el3){
		if(!el3.hasClass('unvisible')){
		
		
			var message2="";
			survey_error2=false;
			if(el3.getElement('h2')){
				var h2 = el3.getElement('h2').getText();
				message2 = message2 + h2 + '\nbreak;';
			}else{
			message2 = message2  + 'break;';
			}
			
			message2 += checkSurveyInputs(el3);	
			message2 += checkSurveyNumbers(el3);	
			message2 += checkSurveyDropdowns(el3);
			message2 += checkSurveyCollections(el3);
			message2 += checkSurveyCollections2(el3);
			message2 += checkSurveyChoices(el3);	
			message2 += checkSurveyBooleans(el3);
			
			message2=message2+"--group--";
			
			if(survey_error2){
			  survey_error=true;
			  survey_message = survey_message + message2
			}
			
		}
	});
	
	//checkSurveyDependencies();		
			 
	var nowd = new Date();
	var t = nowd.getTime();
	document.getElementById('trace_date').value=t;
	
	if(survey_error){
		showErrors(survey_message);
		return false;
	}else{
		return true;
	}
}




/* CHECK BASIC FORM RULES */
function checkform2(sform){
	survey_message ="";
	survey_error=false;
	
	
	
	var groups = $$('div.group_holder');
	groups.each(function(el3){
		if(!el3.hasClass('unvisible')){
			var message2="";
			survey_error2=false;
			if(el3.getElement('h2')){
				var h2 = el3.getElement('h2').getText();
				message2 = message2 + h2 + '\nbreak;';
				
				message2 += checkSurveyNumbers(el3);	
				message2 += checkSurveyDates(el3);	
				message2=message2+"--group--";
				
				if(survey_error2){
				  survey_error=true;
				  survey_message = survey_message + message2
				}
			}
		}
	});

		
	
	var nowd = new Date();
	var t = nowd.getTime();
	document.getElementById('trace_date').value=t;
	
	
	
	if(survey_error){
	   showErrors(survey_message);
	   return false;
	}else{
		return true;
		$('save_type').setProperty("value",save_type);
	
	}
}



function showDependentRows(elem,depend_value,name,dataType){

	
	
var rows = $$('input[name=dOn_'+name+']');


	rows.each(function(el3){
	    var parent = el3.getParent().getParent();
	    //COLLECTION
	   if(dataType=="collection"){
	      
	       		if(el3.value==depend_value){
					 if(elem.checked){
						el3.addClass('show');
						el3.removeClass('hideRow');
					 }	else{
					   	el3.addClass('hideRow');
					   	el3.removeClass('show');
					 }
				 }
	      //CHOICE
	   }else if(dataType=="choice"){ 
			if(el3.value==depend_value){
				el3.addClass('show');
				el3.removeClass('hideRow');
				
			}else{
			   	el3.addClass('hideRow');
			   	el3.removeClass('show');
			}
	   }else{ 
		   //BOOLEAN
		    if(el3.value=="t"  && depend_value=="true") depend_value="t";
		    else  if(el3.value=="f"  && depend_value=="false") depend_value="f";
			if(el3.value==depend_value){
				el3.addClass('show');
				el3.removeClass('hideRow');
				
			}else{
			   	el3.addClass('hideRow');
			   	el3.removeClass('show');
			}
	   }	
		var showRow=true;
		//Check if all elements have show attribute
		$(parent).getElements('input[name*=dOn]').each(function(el2){
		    
		     if(el2.hasClass("hideRow")){
		         showRow=false;
		     }
		});
		if(showRow){
		    parent.removeClass('unvisible');
		}else{
		    parent.addClass('unvisible');
		}
	});
	
	/*process entire groups */
	
var groups = $$('input[name=dOnGroup_'+name+']');
	groups.each(function(el3){
		
	    var parent = el3.getParent();
	    if(dataType=="boolean"){
	    	  if(el3.value=="t" && depend_value=="true") depend_value="t";
			  else  if(el3.value=="f" && depend_value=="false") depend_value="f";
	    }	
		if(el3.value==depend_value){
			el3.addClass('show');
			el3.removeClass('hideRow');
			
		}else{
		   	el3.addClass('hideRow');
		   	el3.removeClass('show');
		}
		var showRow=true;
		//Check if all elements have show attribute
		$(parent).getElements('input[name*=dOn]').each(function(el2){
		    
		     if(el2.hasClass("hideRow")){
		         showRow=false;
		     }
		});
		if(showRow){
		    parent.removeClass('unvisible');
		}else{
		    parent.addClass('unvisible');
		}
	});	
}

function is_other_selected(elem){
	var input = $(elem).getParent().getElement('input[type=text]');
	$(elem).getElements('option').each(function(el){
		if(el.value=='OTHER'){
		       if(el.selected){
		          input.removeClass('unvisible');
		       }else{
		          input.addClass('unvisible');
		       }
			}
		});
		
}
/* for collection  and choice*/
function toggleOther(elem,hideType){
    var toggle = $(elem).getParent().getParent().getElement("input[type='text']");
	if(hideType=='disabled'){
		if($(elem).checked){
		    toggle.setProperty('disabled','');	
		}
		else {
			 toggle.setProperty('disabled','disabled');	
			 toggle.setProperty("value","");
		}
	}else{
		if($(elem).checked){
		    toggle.removeClass('unvisible');	
		}
		else {
			 toggle.addClass('unvisible');
			 toggle.setProperty("value","");
		}
	}
}


function hideOther(elem,hideType){
    var toggle = $(elem).getParent().getParent().getElement("input[type='text']");
	if(hideType=='disabled'){
		
			 toggle.setProperty('disabled','disabled');	
			 toggle.setProperty("value","");
		
	}else{
		
			 toggle.addClass('unvisible');
			 toggle.setProperty("value","");
		
	}
}

function is_other_checked(elem,name2){
	if(elem.checked){
	document.getElementById('o_s_' + name2).className ='otherShow';
	document.getElementById('col1other_text_' + name2).focus();
	}
	else {
	document.getElementById('o_s_' + name2).className ='unvisible';
	document.getElementById('col1other_text_' + name2).value ='';
	}
	}
	
function is_other_checked(elem){
	if($(elem).checked){
	    $(elem).getParent().getElement("input[type='text']").removeClass('unvisible');	
	}
	else {
		$(elem).getParent().getElement('input[type=text]').addClass('unvisible');
		$(elem).getParent().getElement('input[type=text]').setProperty("value","");
	}
}


function show_other_selected(name2){
	document.getElementById('o_s_' + name2).className ='';
}


function hide_other_selected(name2){
	document.getElementById('o_s_' + name2).className ='unvisible';
	document.getElementById('o_i_' + name2).value ='';
}






function isChosen(select) {
	if (select.selectedIndex == 0) {
		return true;
	}
	else {
		return false;
	}
}

function notDate(field){
var day=field.value.substring(8,10);
var month=field.value.substring(5,7);
var year=field.value.substring(0,4);
	if(isNaN(parseInt(day,10)) || isNaN(parseInt(month,10)) || isNaN(parseInt(year,10))){
		return true;
	}else{
		return false;
	}
}

function isDate(day,month,year){
	if(isNumber(day) || isNumber(month) || isNumber(year)){
		return true;
	}else{
		return false;
	}
}

function isChoiceSelected(name2,notvalue){
	var elems = document.getElementsByName(name2);
	var i=0;
	var selected = false;
	while(i != elems.length){
		if(elems[i].name==name2){
			if(elems[i].checked==true){
				if(elems[i].value!=notvalue){
					selected=true;
				}
			}
		}
		i++;
	}
	return selected;
}


function isChecked(collection){
	var checked = false;
	collection.each(function(el){
		if(el.checked){
			checked=true;
		}
	});
	return checked;
}
function isChecked2(collection){
	var checked = false;
	
	collection.each(function(el){
	    if(!el.getParent().getParent().getParent().hasClass('unvisible')){
		    if(el.checked){
				checked=true;
			}
		}
	});
	return checked;
}


function getCheckedObject(collection){
	var checked;
	collection.each(function(el){
		if(el.checked){
			checked=el;
		}
	});
	return checked;
}


function getOtherInput(collection){
	
	collection.each(function(el){
	    if(el.value=='OTHER'){
	     
	       if(el.checked){ 
	        
			   return el.parentNode.getElement('input[type=text]');  
		   }
	    }
		
	});
	return '';
}


function isOtherSelected(select) {
	var test=false;
	$(select).getElements('option').each(function(el){
		if(el.value=='OTHER'){
	       if(el.selected){
	     
	          test= true;
	       }else{
	          test= false;
	       }
		}
	});
	
 return test;
}
function getOtherSelected(select) {
	
	$(select).getElements('option').each(function(el){
		if(el.value=='OTHER'){
	       if(el.selected){
	          return el;
	       }else{
	          return 'null';
	       }
		}
	});
	
 return 'null';
}

function StringBuilder(value)
{
    this.strings = new Array("");
    this.append(value);
}

// Appends the given value to the end of this instance.
StringBuilder.prototype.append = function (value)
{
    if (value)
    {
        this.strings.push(value);
    }
}

// Clears the string buffer
StringBuilder.prototype.clear = function ()
{
    this.strings.length = 1;
}

// Converts this instance to a String.
StringBuilder.prototype.toString = function ()
{
    return this.strings.join("");
}


function addHiddenItem(name,input,place){
var sb = new StringBuilder();
var inp = document.getElementById(input);
var plac = document.getElementById(place);
place.className='';
sb.append('<div class=" " style="margin:0px;margin-left:10px;"><table class=" " cellspacing="0" cellpadding="0" style="margin:0px;"><tr><td class=" " style="padding:0px;width:1%;border-color:white;"><input title="Remove item" alt="Remove item" src="/shared/images/famfamfam/cancel.png" type="image" value="remove" onclick="removeHiddenItem(this);"/></td><td style="font-size:12px;border-color:white;"><input type="hidden" name="' + name + '" value="'+inp.value+'"/>');
sb.append(''+inp.value+'</td></tr></table></div>');
plac.innerHTML = plac.innerHTML + sb.toString();
inp.value='';
}
function removeHiddenItem(but){
var td = but.parentNode;
var tr = td.parentNode;
var table = tr.parentNode;
var div = table.parentNode;
var ul = div.parentNode;
ul.removeChild(div);
}



function confirm_delete(delbutton,del_id,dataset,position){
	var conf = confirm('Do you really want to delete this record?');
	
	if(position!=''){
		delbutton.form.action = delbutton.form.action + "#group_front_" + position;
	}
	if(conf){
		
		$$('input[name=delete_id_'+dataset+']').each(function(el){
	
	el.value=del_id;
	
	});
	delbutton.form.submit();
		return true;
	}
	else{
		return false;
	}
}

function confirm_delete2(delbutton){
	var conf = confirm('Do you really want to delete this record?');
	if(conf){
		$(delbutton).getParent().getParent().addClass('unvisible');
		$(delbutton).getParent().getElement("input[name^=delete_]").setProperty('value','true');
		return true;
	}else{
		return false;
	}
}

function confirm_delete3(delbutton){
	var conf = confirm('Do you really want to delete this record?');
	if(conf){
		$(delbutton).getParent().getParent().addClass('unvisible');
		$(delbutton).getParent().getElement("input[name^=delete_]").setProperty('value','true');
		return true;
	}else{
		return false;
	}
}

function confirm_delete4(delbutton,del_id,position){
	var conf = confirm('Do you really want to delete this record?');
	
	if(position!=''){
		delbutton.form.action = delbutton.form.action + "#group_front_" + position;
	}
	if(conf){
		
		$$('input[name=del_oid]').each(function(el){
	
	el.value=del_id;
	
	});
	delbutton.form.submit();
		return true;
	}
	else{
		return false;
	}
}

function deleteGroup(delbutton){
	var conf = confirm('Do you really want to delete this record?');
	if(conf){
		$(delbutton).getParent().getParent().getParent().addClass('unvisible');
		$(delbutton).getParent().getElement("input[name^=delete_]").setProperty('value','true');
	}
}

function deleteGroup2(delbutton){
	var conf = confirm('Do you really want to delete this record?');
	if(conf){
		$(delbutton).getParent().getParent().getParent().getParent().addClass('unvisible');
		$(delbutton).getParent().getElement("input[name^=delete_]").setProperty('value','true');
	}
}
function deleteGroup3(delbutton){
	var conf = confirm('Do you really want to delete this record?');
	if(conf){
		$(delbutton).getParent().getParent().getParent().getParent().addClass('unvisible');
		$(delbutton).getParent().getElement("input[name^=delete_]").setProperty('value','true');
	}
}

function copyNewRow(subformname){
	var clone = $('template_'+subformname).clone().injectBefore($('template_'+subformname));
	var count = $('newcount_'+subformname).getProperty('value');
	var count2 = count.toInt();
	count2++;
	clone.setProperty('id','row_'+subformname+'__new_'+count2);
	clone.removeClass('unvisible');
	clone.addClass('record_row');
	clone.getElementsBySelector('input,select').each(function(el){
	   if(!el.hasClass('across')){
		  el.name=el.name+count2;
		  el.id=el.id+count2;
		}else{
		  el.value='_new_'+count2;
		}
	});
	$('newcount_'+subformname).setProperty('value',""+count2);
}

function copyNewGroup(groupname){
	var clone = $('template_'+groupname+'_dependon').clone().injectBefore($('template_'+groupname+'_dependon'));
	var count2 = $ES('div.gh_'+groupname+'_d').length;
	var newcount=$('newcount_'+groupname).getProperty('value');
	var count=parseInt(newcount);
	count++;
	count2=count2+count;
	clone.setProperty('id','gh_'+groupname+'_new_'+count);
	
	clone.removeClass('unvisible');
	clone.removeClass('template');
	clone.getElementsBySelector('h2').each(function(el){
	el.setText(el.getText()+count2);
	});
	clone.getElementsBySelector('input,select,textarea').each(function(el){
	el.name=el.name+''+count;
	el.id=el.id+''+count;
	});
	var holder = clone.getElement('div[class=surveyHolder]'); 
	holder.id=holder.id+'_new_'+count;
	$('newcount_'+groupname).setProperty('value',""+count);
	
	/* SLIDING EFFECT group */
	var myTransition = new Fx.Transition(Fx.Transitions.Quad.easeOut, 3);
	var acccerSlide = new Fx.Slide(holder.id, {duration: 500, transition: myTransition, wait: false});
	var hidegroup = clone.getElement('img.hide_group')
	var div = hidegroup.getParent().getParent().getParent().getParent().getParent().getParent();
	var holder = div.getElement('div[class=surveyHolder]'); 
	hidegroup.addEvent('click', function(e){
	acccerSlide.toggle();
	new Event(e).stop().preventDefault();
	});
	holder.getParent().setStyle('overflow-x','auto');
	return false;
}



function setSlides(){
var myTransition = new Fx.Transition(Fx.Transitions.Quad.easeOut, 3);
$ES('img.hide_group').each(function(el){
	var div = el.getParent().getParent().getParent().getParent().getParent().getParent();
	var holder = div.getElement('div[class=surveyHolder]'); 
	var acccerSlide = new Fx.Slide(holder.id, {duration: 500, transition: myTransition, wait: false});
	el.addEvent('click', function(e){
		acccerSlide.toggle();
		new Event(e).stop().preventDefault();
	});
	holder.getParent().setStyle('overflow-x','auto');
	
});

$ES('img.hide_filter').each(function(el){
var acccerSlide2 = new Fx.Slide('hide_fieldset', {duration: 500, transition: myTransition, wait: false});
el.addEvent('click', function(e){
acccerSlide2.toggle();
new Event(e).stop().preventDefault();
});
});

/**
	 * The tooltips.
	 * Usage: Add class 'show-tooltip' to the tooltip and add title 'title::content' and it should work!
	 */
	var myTips = new Tips($$('.show-tooltip'), {
		timeOut: 200,
		maxTitleChars: 50,
		maxOpacity: .9,
	    initialize: function(){
	        this.fx = new Fx.Style(this.toolTip, 'opacity', {wait: false, transition: myTransition}).set(0); // Create the effect.
	    },
	    onHide: function(){
	        this.fx.start(0); // Go to 0 using the transition.
	    },
	    onShow: function(){
	        this.fx.start(1); // Go to 1 using the transition.
	    }
	});

}


function setTooltips(){
var myTransition = new Fx.Transition(Fx.Transitions.Quad.easeOut, 3);

/**
	 * The tooltips.
	 * Usage: Add class 'show-tooltip' to the tooltip and add title 'title::content' and it should work!
	 */
	var myTips = new Tips($$('.show-tooltip'), {
		timeOut: 200,
		maxTitleChars: 50,
		maxOpacity: .9,
	    initialize: function(){
	        this.fx = new Fx.Style(this.toolTip, 'opacity', {wait: false, transition: myTransition}).set(0); // Create the effect.
	    },
	    onHide: function(){
	        this.fx.start(0); // Go to 0 using the transition.
	    },
	    onShow: function(){
	        this.fx.start(1); // Go to 1 using the transition.
	    }
	});

}





function showRows(choice,name){
var group = $(choice).getParent().getParent().getParent().getParent();
group.getElements("span.dependon").each(function(el){
if(el.getText()==name){
el.getParent().getParent().removeClass('unvisible');
}
});
}
function hideRows(choice,name){
	var group = $(choice).getParent().getParent().getParent().getParent();
	group.getElements("span.dependon").each(function(el){
		if(el.getText()==name){
			el.getParent().getParent().addClass("unvisible");
		}
	});
}


/* BOOLEANS */
function checkSurveyBooleans(el){
        var message2="";
        var error2=false;
       
		var booleans  = el.getElementsBySelector('td.boolean');
		booleans.each(function(el2){
		 if(!hasParentClass(el2,'unvisible')){
				if(el2.hasClass('required')){
					var checkboxes = el2.getElements('input[type=radio]');
					if(!isChecked(checkboxes)){
						message2 = message2 + el2.getProperty('title')+ "\nbreak;";
						error2=true;
						el2.addClass('requiredCheck');
					}else{
						el2.removeClass('requiredCheck');	
					}	
				}
			}else{
						el2.removeClass('requiredCheck');	
				}
		});	
					
		
		if(error2){
		  survey_error2=true;
		  return message2
		}else{
		  return ''; 
		}
}

function checkSurveyChoices(el){
        var message2="";
        var error2=false;
	/* CHOICES */
			var choices  = el.getElementsBySelector('td.choice');
			choices.each(function(el2){
			if(!hasParentClass(el2,'unvisible')){
				if(el2.hasClass('required')){
					var checkboxes = el2.getElements('input[type=radio]');
					if(!isChecked(checkboxes)){
						message2 = message2 + el2.getProperty('title')+ "\nbreak;";
						error2=true;
						el2.addClass('requiredCheck');
					}else{
						el2.removeClass('requiredCheck');	
					}	
				}
				}else{
				el2.getParent().removeClass('requiredCheck');	
				}
			});		
	
		if(error2){
		  survey_error2=true;
		  return message2
		}else{
		  return ''; 
		}
}

	
/* COLLECTIONS */
function checkSurveyCollections(el){
        var message2="";
        var error2=false;

		var collections = el.getElementsBySelector('td.collection');
		
		collections.each(function(el2){
			var checkboxes = el2.getElements('input[type=checkbox]');
			if(!hasParentClass(el2,'unvisible')){
				if(el2.hasClass('required')){
					if(!isChecked(checkboxes)){
						message2 = message2 + el2.getProperty('title')+ "\nbreak;";
						error2=true;
						
						el2.addClass('requiredCheck');
					}else{
						el2.removeClass('requiredCheck');
					}	
				}
		   }else{
		       el2.removeClass('requiredCheck');
		   }
			checkboxes.each(function(el4){
			   
				if(el4.value.toUpperCase()=='OTHER'){
					if(el4.checked){
					var other=  el4.getParent().getParent().getElement('input[type=text]');
						if(isEmpty(other)){
							message2 = message2 + "Please fill in other for '"+el2.getProperty('title')+"'.\nbreak;";
							error2=true;
							other.getParent().addClass('requiredCheck');
						}else{
							other.getParent().removeClass('requiredCheck');
						}
					}
				}
			});
		
		});			
	
		if(error2){
		  survey_error2=true;
		  return message2
		}else{
		  return ''; 
		}
}


function checkSurveyCollections2(el){
        var message2="";
        var error2=false;

		var collections = el.getElementsBySelector('td.collection2');
		
		collections.each(function(el2){
			var checkboxes = el2.getElements('input[type=checkbox]');
			if(!hasParentClass(el2,'unvisible')){
				if(el2.hasClass('required')){
					if(!isChecked(checkboxes)){
						message2 = message2 + el2.getProperty('title')+ "\nbreak;";
						error2=true;
						
						el2.addClass('requiredCheck');
					}else{
						el2.removeClass('requiredCheck');
					}	
				}
		   }else{
		       el2.removeClass('requiredCheck');
		   }
			checkboxes.each(function(el4){
			   
				if(el4.value.toUpperCase()=='OTHER'){
					if(el4.checked){
					var other=  el4.getParent().getParent().getElement('input[type=text]');
						if(isEmpty(other)){
							message2 = message2 + "Please fill in other for '"+el2.getProperty('title')+"'.\nbreak;";
							error2=true;
							other.addClass('requiredCheck');
						}else{
							other.removeClass('requiredCheck');
						}
					}
				}
			});
		
		});			
	
		if(error2){
		  survey_error2=true;
		  return message2
		}else{
		  return ''; 
		}
}


/* CHECKS IF AN ELEMENT HAS A PARENT CLASS WHICH IS UNVISIBLE
The check stops when the mainForm element is reached. */
function hasParentClass(elem,className){
	var par = elem.getParent();
	if(par.id){
		if(par.id=='mainForm' || par.id=='cmForm'){
		    return false;
		}
	}	
		if($(elem).getParent().hasClass(className)){
		
	 		return true;
		}else if(par==null){
	    	return false;
		}else{
			return hasParentClass(par,className);
		}
	
}


/* DROPDOWNS 
Validates of all required dropdowns are filled in. */
function checkSurveyDropdowns(el){
        var message2="";
        var error2=false;
		var selects = el.getElementsBySelector('select');
		selects.each(function(el2){
		
		    
		   if(!hasParentClass(el2,'unvisible')){
		     
				if(el2.hasClass('required')){
					if(isChosen(el2)){
						message2 = message2 + el2.getProperty('title')+ "\nbreak;";
						error2=true;
						el2.getParent().getParent().addClass('requiredCheck');
					}else{
						el2.getParent().getParent().removeClass('requiredCheck');	
					}/* END CHOSEN */
				}/* END REQUIRED */
			
			
			$(el2).getElements('option[value=OTHER]').each(function(el5){
			
				if(el5.selected){
					var input = el2.getParent().getElement('input[type=text]');
						      
					if(isEmpty(input)){
						message2 = message2 + "Please fill in other.\nbreak;";
						error2=true;
						input.getParent().addClass('requiredCheck');
					}else{
						input.getParent().removeClass('requiredCheck');
					}
				}
				
				});
		    }
		});		
	
		if(error2){
		  survey_error2=true;
		  return message2
		}else{
		  return ''; 
		}
}

	/* NUMBERS */
	
function checkSurveyNumbers(el){
        var message2="";
        var error2=false;
		var inputs2 = el.getElementsBySelector('input.number').filterByAttribute('type','=','text');
		inputs2.each(function(el2){
		if(!hasParentClass(el2,'unvisible')){
			if(isEmpty(el2)){
				
			}else{
      			if(isNumber(el2)){
					
					message2 = message2 + el2.getProperty('title')+ "\nbreak;";
					error2=true;
					el2.getParent().addClass('requiredCheck');
					el2.getParent().addClass('requiredCheck');
				}else{
				 	if(el2.hasClass("percentage")){
					    if(el2.value<=100 && el2.value>=0){
					        el2.getParent().removeClass('requiredCheck');
							el2.getParent().removeClass('requiredCheck');
					    }else{
						    message2 = message2 + "This is an impossible percentage."+ "\nbreak;";
							error2=true;
							el2.getParent().addClass('requiredCheck');
							el2.getParent().addClass('requiredCheck');
					    }
					}else{
						el2.getParent().removeClass('requiredCheck');
						el2.getParent().removeClass('requiredCheck');
					}
				}
			
			}	
			}
		});
						
		if(error2){
		  survey_error2=true;
		  return message2
		}else{
		  return ''; 
		}
}	



/* INPUTS */
function checkSurveyInputs(el){
        var message2="";
        var error2=false;
		var inputs = el.getElementsBySelector('input.required').filterByAttribute('type','=','text');
			inputs.each(function(el2){
			if(!hasParentClass(el2,'unvisible')){
				if(isEmpty(el2)){
					message2 = message2 +"Please fill in '"+ el2.getParent().getProperty('title')+ "'\nbreak;";
					error2=true;
					el2.getParent().addClass('requiredCheck');
					el2.getParent().addClass('requiredCheck');
				}else{
				
					/* EMAILS */
					if(el2.hasClass('email')){
					
						if(isEmail(el2)){
						
							message2 = message2 + "You entered an invalid e-mail address.\nbreak;";
							error2=true;
							el2.getParent().addClass('requiredCheck');
							el2.getParent().addClass('requiredCheck');
						}else{
							el2.getParent().removeClass('requiredCheck');
						}
					}else{
						el2.getParent().removeClass('requiredCheck');
						el2.getParent().removeClass('requiredCheck');
					}
					
					
				}
			}		
			});		
	
	/* DATES */
			inputs = el.getElementsBySelector('input.date').filterByAttribute('type','=','text');
			inputs.each(function(el2){
			if(!hasParentClass(el2,'unvisible')){
				if(isEmpty(el2)){
					
					if(el2.getParent().hasClass("required")){
						message2 = message2 +"Please fill in '"+ el2.getParent().getProperty('title')+ "'\nbreak;";
						error2=true;
						el2.getParent().addClass('requiredCheck');
						el2.getParent().addClass('requiredCheck');
					}
				}else{
				
					
						if(notDate(el2)){
							 var tr = el2.getParent().getParent();
						    var lab = tr.getElement('label');
						    if(lab){ 
								message2 = message2 + "You entered an invalid date for '"+$(lab).getText()+"'.\nbreak;";
							}else{
								message2 = message2 + "You entered an invalid date.\nbreak;";
							}
							error2=true;
							el2.getParent().addClass('requiredCheck');
							
						}else{
							el2.getParent().removeClass('requiredCheck');
							el2.getParent().removeClass('requiredCheck');
				        }
					
				}	
				}
			});		
		if(error2){
		  survey_error2=true;
		  return message2
		}else{
		  return ''; 
		}
}

/* DATES */
function checkSurveyDates(el){
        var message2="";
        var error2=false;
		
	
	/* DATES */
		var	inputs = el.getElementsBySelector('input.date').filterByAttribute('type','=','text');
			inputs.each(function(el2){
			if(!hasParentClass(el2,'unvisible')){
				if(isEmpty(el2)){
					
				}else{
				
					
						if(notDate(el2)){
						    var tr = el2.getParent().getParent();
						    var lab = tr.getElement('label');
						    if(lab){ 
								message2 = message2 + "You entered an invalid date for '"+$(lab).getText()+"'.\nbreak;";
							}else{
								message2 = message2 + "You entered an invalid date.\nbreak;";
							}
							error2=true;
							el2.getParent().addClass('requiredCheck');
							
						}else{
							el2.getParent().removeClass('requiredCheck');
							el2.getParent().removeClass('requiredCheck');
				        }
					
				}	
				}
			});		
		if(error2){
		  survey_error2=true;
		  return message2
		}else{
		  return ''; 
		}
}

/* TEXTAREAS */	
function checkSurveyTextareas(el){
        var message2="";
        var error2=false;
		var inputs = el.getElementsBySelector('textarea.required');
			inputs.each(function(el2){
			if(!el2.getParent().getParent().hasClass('unvisible')){
				if(isEmpty(el2)){
					message2 = message2 + el2.getProperty('title')+ "\nbreak;";
					error2=true;
					el2.getParent().addClass('requiredCheck');
					
				}else{
				
						el2.getParent().removeClass('requiredCheck');
				
				}
			}		
			});		
	
	
		if(error2){
		  survey_error2=true;
		  return message2
		}else{
		  return ''; 
		}
}

/* CHECK ROWS of a subform
this is obsolete */

function checkSurveyRows(el){
        var message2="";
        var error2=false;
		var recordRows = el.getElementsBySelector('tr.record_row');
		
		recordRows.each(function(el){
			var testinput = el.getElementsBySelector('input.testRequired');
			testinput.each(function(el2){
				if(!el.hasClass('unvisible')){
					if(isEmpty(el2)){
						message2 = message2 + el2.getProperty('title')+"\nbreak;";
						error2=true;
						el2.getParent().getParent().addClass('requiredCheck');
						el2.getParent().getParent().addClass('requiredCheck');
			
					}
					else{
						if(el2.hasClass('email')){
							if(isEmail(el2)){
							
								message2 = message2 + "You entered an invalid e-mail address.\nbreak;";
								error2=true;
								el2.getParent().getParent().addClass('requiredCheck');
								el2.getParent().getParent().addClass('requiredCheck');
							}else{
							  
								el2.getParent().getParent().removeClass('requiredCheck');
								el2.getParent().getParent().removeClass('requiredCheck');
			
							}
						}else{
							el2.getParent().getParent().removeClass('requiredCheck');
						    el2.getParent().getParent().removeClass('requiredCheck');
			            }
					}	
				}
			});
		
			var testselect = el.getElementsBySelector('select.testRequired');
			testselect.each(function(el2){
				if(!el.hasClass('unvisible')){
					if(isChosen(el2)){
						message2 = message2 + el2.getProperty('title')+"\nbreak;";
						error2=true;
						el2.getParent().addClass('requiredCheck');
					}
					else{
						el2.getParent().removeClass('requiredCheck');
					}	
				}
			});
		});	
	
		if(error2){
		  survey_error2=true;
		  return message2
		}else{
		  return ''; 
		}
}


/* CHECK DEPENDENCIES */
function checkSurveyDependencies(){
    var message2="";
    var error2=false;
	var booleans = $$('td.dependencies');
	
	booleans.each(function(el2){
	   var input = el2.getElement('input[value=yes]');
	 
	 
	   if(input){
	        if(input.checked){
	           
	            var count=0;
		   		var dependency_name = input.name;
		   		var groups = $$('input[value=dependon_'+ dependency_name + ']');
		   		groups.each(function(el3){
		   		    var div = el3.getParent();
		   		    
		   		    if(div){
		   		    	if(!div.hasClass('unvisible')){
		   		    		count++;
		   		    	}
		   		    }
		   		});
		   		
		   		if(count==0){
		   		  error2=true;
	              message2 = message2 + "Please add at least one "+dependency_name+"\nbreak;";
	   			}
	   		}
	   }
	   
	  
	});
	
	if(error2){
      survey_message = survey_message + "Other\nbreak;";
	  survey_error=true;
	  survey_message = survey_message + message2;
	  survey_message=survey_message+"--group--";
	}	
	
}		

function redo_trace(but,trace_id){
var conf = confirm('Are you sure you want to re-use this record?');
if(conf){
$('redo_trace_id').value=trace_id;
$('mainForm').submit();
}
}

function isEmpty(elem){

	var str = ""+elem.value;
	str=str.trim();
	var re = /.+/;
	if (!str.match(re)){
		return true;
	} else {
		return false;
	}
}

function isEmail(elem){

	var str = ""+elem.value;
	str=str.trim();
	var apos=str.indexOf("@")
	var spacepos=str.indexOf(" ")	
	var dotpos=str.lastIndexOf(".")
	if (1>apos||2>dotpos-apos||spacepos!=-1) 
	{return true}
	else {return false}
}


function ajaxsubmit(sform){
	var log = $('ajaxinsert').addClass('ajax-loading');
	try{
	   if($('ajaxinsert').getElement('#results_table')){
	    $('ajaxinsert').getElement('#results_table').addClass('unvisible');
		$('wait').removeClass('unvisible');
		}
	} catch (err) {}
	$(sform).send({
		update: log,
		onComplete: function() {
			$('wait').addClass('unvisible');
			log.removeClass('ajax-loading');
			setTooltips();
	    }
	 });
	if(!(typeof _uacct == 'undefined')){
		urchinTracker('/method_ajax/'+$(sform).toQueryString());
	}
	return false;
}

function surveyFormSubmit(button,action,save_type,validate){
    $('save_type').setProperty("value",save_type);
    var sform = button.form;
    var submit = false;
	if(validate){
	    submit = checkform(sform);
	}else{
		submit = checkform2(sform);
	}
	
	
    if(submit){
	    sform.action=action;
	    
		var log = $('wait').addClass('ajax-loading');
		
		try{
			$('wait').setStyle('z-index','200');
			if(save_type=="return") $('wait').setText(' Returning without saving the form ...');
			else $('wait').setText(' Please wait while the form is being saved ...');
		    $('wait').removeClass('unvisible');
		   $("darkenBackground").setStyle('z-index','110');
		    $("darkenBackground").removeClass("unvisible");
		} catch (err) {}
		 window.scrollTo(0,0);
		log.addClass('form-wait');
		if(save_type=='ajax'){
		    
			$(sform).send({
				update: log,
				evalResponse: false,
				onComplete: function() {
					
					log.removeClass('ajax-loading');
					$('wait').setStyle('z-index','0');
					$("darkenBackground").addClass("unvisible");
			       
			    }
			 });
		  }else{
		    
		 	sform.submit();
		 }
		
	}
	
	return false;
}

function showErrors(message){
 $("darkenBackground").setStyle('z-index','110');
	$("darkenBackground").removeClass("unvisible");
	$("popupdiv").setStyle('z-index','150');
	$('popupdiv').removeClass('unvisible');
	var test=$('popuptext');
	test.setText("");
	$('popupdiv').getElement("h2").setText("Problems found.");
	
	var groups= message.split('--group--');
	groups.each(function(el){
		var messages = el.split('break;');
		var ul=new Element('ul');
		messages.each(function(item, index){
		    if(index==0){
		   
			   if(item!=''){ var elem=new Element('h3');
				elem.setText(item);
				elem.injectInside(test);
				}
		    }else{
		       if(item!=""){
				var elem=new Element('li');
				elem.setText(item);
				elem.injectInside(ul);
				}
			}
			
		});
		ul.injectInside(test);
	});
	
	$('popupdiv').addClass('popup');
	window.scrollTo(0,0);
}

function removeErrors(button){
$(button).getParent().addClass("unvisible");
$("darkenBackground").addClass("unvisible");
}






/*

PERSON FUNCTIONS

*/





function getOptionValue(obj){
	if(obj){
		return obj.options[obj.selectedIndex].value;
	}
	return null;
}

function getOptionText(obj){
	if(obj){
		return obj.options[obj.selectedIndex].text;
	}
	return null;
}

function hasOption(el,val){
var has_elem = false;
$(el).getElements('option').each(function(el2){
	if(el2.value==val){
		has_elem=true;
	}
});
return has_elem;
}

function getOption(el,val){
var option = false;
$(el).getElements('option').each(function(el2){
	if(el2.value==val){
		option=el2
	}
});
return option;
}


function clearSearchForm(button){
	var sform = $(button).form;
	$(sform).reset();
	var log = $('ajaxinsert').addClass('ajax-loading');
		try{
		    $('ajaxinsert').getElement('#results_table').addClass('unvisible');
			$('wait').removeClass('unvisible');
		} catch (err) {}
		$(sform).send({
			update: log,
			onComplete: function() {
				$('wait').addClass('unvisible');
				log.removeClass('ajax-loading');
		    }
		 });	
}



function checkContactForm(forms){
if(isEmpty(forms.name) || isEmpty(forms.ammaai) || isEmpty(forms.body) || isEmail(forms.ammaai)){
alert('Please fill in all required fields');

}else{
$("contact_form").submit();

}
}



function checkFileTypes(button,types){
	var types_array = types.split(",");
	var value = button.value;
	value = value.slice(value.indexOf(".")+1).toLowerCase();
	var allowed=false;
	for(i=0;i<=types_array.length;i++){
	
		if(types_array[i]==value){
		allowed=true;
		}
	}
	if(!allowed){
	alert("File type not allowed. Please select one of the following file types: "+types);
	}
}




function highlightElement(elem,type,className){
	if(className==null || className=='') className="highlight";
	if(type=="boolean"){
		$(elem).getNext().addClass(className);
	}else if(type=="select"){
		$(elem).getParent().addClass(className);
	}else if(type=="choice"){
		$(elem).getParent().getElement("label").addClass(className);

	}else if(type=="checkbox"){
		$(elem).getParent().getParent().getElement("label").addClass(className);

	}else{
		$(elem).addClass(className);
	}
}

function removeHighlightElement(elem,type,className){
	if(className==null || className=='') className="highlight";
	if(type=="boolean"){
		$(elem).getNext().removeClass(className);
	}else if(type=="select"){
		$(elem).getParent().removeClass(className);
		
	}else if(type=="choice"){
		$(elem).getParent().getElement("label").removeClass(className);
		
	}else if(type=="checkbox"){
		$(elem).getParent().getParent().getElement("label").removeClass(className);
		
	}else{
		$(elem).removeClass(className);
	}
}
