


function submitSpin(){
	
	$('body').spin(
			{
				message:'Please wait while the form is being saved ...',
				containerPosition:{
					relativeTo: $('body')
				}
	  });
}

function editMutations(button,edit_action){
	
	$(button).getForm().action = edit_action;

	$('body').spin({message:'Please wait while the form is being saved ...',containerPosition:{relativeTo: $('body')}});
	
	$(button).getForm().submit();
	return true;
}


function isEmpty(elem){
var str = elem.value;

var re = /.+/;
if (!str.match(re)){
return true;
} else {
return false;
}
}
function isTextAreaEmpty(elem,discardtext){
var str = elem.value;
var re = /.+/;
if (!str.match(re) || str==discardtext){
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 isEmail(elem){
var str = elem.value;
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 isNumber(elem){
var str = elem.value;
if (isNaN(str)){
return true;
} else {
return false;
}
}
function isEmail3(elem){
var str = elem;
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 isChosen(select) {
if (select.selectedIndex == 0) {
return true;
}
else {
return false;
}
}
function isBooleanSelected(name2){
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){
selected=true;
}
}
i++;
}
return selected;
}
function getSelectedValue(name2){
var elems = document.getElementsByName(name2);
var i=0;
var selected = "";
while(i != elems.length){
if(elems[i].name==name2){
if(elems[i].checked==true){
selected=elems[i].value;
}
}
i++;
}
return selected;
}
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 isOther(select) {
if (select.selectedIndex == select.length-1) {
return true;
}
else{
return false;
}
}
function resetEQA(formm){
var doconfirm = confirm('Do you really want to reset this datasheet?');
if(doconfirm){
document.getElementById('add_action').value='reset';
formm.submit();
}
}


function assessorSubmit(button,action){
    document.getElementById('eqa_id_action').value=action;
	var nowd = new Date();
	var t = nowd.getTime();
	document.getElementById('trace_date').value=t;
	var sform = button.form;
	sform.submit();
}
function changeEqaSubmit(button,action){
    document.getElementById('eqa_id_action').value=action;
	var nowd = new Date();
	var t = nowd.getTime();
	document.getElementById('trace_date').value=t;
	var sform = button.form;
	sform.submit();
}

function copyOldText(text_elem,comment_type){
var text = $(text_elem).getElement('pre').getText();
var old_text = document.getElementById('comment_'+comment_type).value;

text = fix_text(text);
if(old_text.trim()!=""){
if(old_text.indexOf(text,0)==-1){

document.getElementById('comment_'+comment_type).value=old_text+'\n'+text;
}
}else{
document.getElementById('comment_'+comment_type).value=text;
}
}


function fix_text(text) {
	//convert <,> and & to the corresponding entities
	return String(text).replace(/\r\n/g, "\n").replace(/\n{2,}/g, "\n");
	
}

function show_hide_ex_in(com_as){
	if(com_as=='true'){
	  
	    $$('tr[id^=pos_1_chosen_exons]').addClass('unvisible');
		$$('input[name=chosen_exons]').setProperty('checked', '');
		
	}else{
	$$('tr[id^=pos_1_chosen_exons]').removeClass('unvisible');
	}
}

function change_mutations(dropdown,selectname,selectid){
	
	var selectedAssayIndex = dropdown.selectedIndex;
	var optionss = new Array();
	optionss = dropdown.options;
	elems = dropdown.form.elements;
	$$('input[name=chosen_mutations]').setProperty('checked', '');
	$$('input[name=chosen_variant]').setProperty('value', '');
	
	
	for(i=0;i<optionss.length;i++){
		
		if(i==selectedAssayIndex){
			
			selectedAssay = optionss[i].value;
			previousAssay = optionss[i].value;

		}
	}
	
	var assayMutations = assays[selectedAssay];
	var com_as = commercial_assays[selectedAssay];
    show_hide_ex_in(com_as);
	
	if(assayMutations){
		for(i in assayMutations){
			if(!isNaN(assayMutations[i])){
				if(assayMutations[i] != 0){
					document.getElementById('col_check_chosen_mutations_'+assayMutations[i]).checked='checked';
				}
			}
		}
	}
	dropdown.blur();
	var otherindex  = dropdown.length-1;
	if(selectedAssayIndex==otherindex){
		$(dropdown).getParent().getElement("input[type=text]").removeClass("unvisible");
		$(dropdown).getParent().getElement("input[type=text]").setStyle("width",dropdown.getStyle("width"));
		$(dropdown).getParent().getElement("input[type=text]").focus();
	}else{
		$(dropdown).getParent().getElement("input[type=text]").addClass("unvisible");
		
		$(dropdown).getParent().focus();
	}
}



function ajaxsubmit2(sform){
	
	sform.submit();
	
	return true;
}



function init(){
	
}
function init2(){
	
}



function loginCookie(sub){
if(this.document.getElementById('save_cookie').checked){
var cookie = confirm('Saving this information will store a cookie with your account information on your computer for 3 months, that will automatically log you in each time you visit the website. You can remove the cookie bij clicking log out on the website or use the tools provided by your browser. Are you sure you want to save this cookie?');
if(cookie){
sub.submit();
}else{
this.document.getElementById('save_cookie').checked="";
sub.submit();
}
}else{
sub.submit();
}
}

function confirmDelete(delform){
var conf = confirm('Do you really want to delete this record?');
	if(conf){
	 delform.submit();
	 return true;
	}	 
	else {
	return false;
	}	
}

function pausecomp(millis)
{
date = new Date();
var curDate = null;
do { var curDate = new Date();}
while(millis > curDate-date);
}



function clearSimpleSearch(formm){
hideSearchResults();
document.getElementById('accredited').checked='';
document.getElementById('accreditation_underway').checked='';
//document.getElementById('certified').checked='';
document.getElementById('eqa').checked='';
document.getElementById('country').selectedIndex='';
if(document.getElementById('pathology') != null){
document.getElementById('pathology').selectedIndex='';
document.getElementById('disease_row').className='unvisible';
}
document.getElementById('radio_all').checked='checked';
document.getElementById('q_string').value='';
formm.submit();
}
function clearAdvancedSearch(formm){
hideSearchResults();
document.getElementById('city').value='';
document.getElementById('laboratory').value='';
document.getElementById('professional').value='';
document.getElementById('eugtid').value='';
document.getElementById('disease').value='';
document.getElementById('accredited').checked='';
document.getElementById('accreditation_underway').checked='';
//document.getElementById('certified').checked='';
document.getElementById('eqa').checked='';
document.getElementById('country').selectedIndex='';
document.getElementById('eqa_provider').selectedIndex='';
document.getElementById('accreditation_body').selectedIndex='';
if(document.getElementById('pathology') != null){
document.getElementById('pathology').selectedIndex='';
document.getElementById('disease_row').className='unvisible';
}
document.getElementById('q_string').value='';
formm.submit();
}
function clearCompleteSearch(formm){
hideSearchResults();
document.getElementById('city').value='';
document.getElementById('laboratory').value='';
document.getElementById('professional').value='';
document.getElementById('disease').value='';
document.getElementById('eugtid').value='';
document.getElementById('accredited').checked='';
document.getElementById('accreditation_underway').checked='';
document.getElementById('certified').checked='';
document.getElementById('eqa').checked='';
document.getElementById('country').selectedIndex='';
document.getElementById('eqa_provider').selectedIndex='';
document.getElementById('eqa_year').selectedIndex='';
document.getElementById('eqa_scheme').selectedIndex='';
document.getElementById('accreditation_body').selectedIndex='';
document.getElementById('certification_organization').selectedIndex='';
document.getElementById('certification_norm').selectedIndex='';
document.getElementById('accreditation_norm').selectedIndex='';
if(document.getElementById('pathology') != null){
document.getElementById('pathology').selectedIndex='';
document.getElementById('disease_row').className='unvisible';
}
document.getElementById('q_string').value='';
formm.submit();
}
function setOtherSelect(select){
var x = select.selectedIndex;
var y = select.options[x].value;
var z = select.name;
var selects = document.getElementsByTagName('select');
var i=0;
while(i < selects.length){
if(selects[i].name=='limit'){
selects[i].selectedIndex=x;
}
i++;
}
}
function hideSearchResults(){
if(document.getElementById('results_table')){
document.getElementById('results_table').className='unvisible';
document.getElementById('wait').className='content';
}
}
function showSearchResults(){
if(document.getElementById('results_table')){
document.getElementById('results_table').className=' ';
document.getElementById('wait').className='unvisible';
}
}

function sendEmail(emailform,message){
var name=confirm(message)
if (name==true)
{
emailform.submit();
}
else
{
return;
}
}

function isOtherCourse(select,name) {
if (select.selectedIndex == select.length-1) {
document.getElementById(name).className='';
}
else{
document.getElementById(name).className='unvisible';
}
}





function loginQAuDatabase(sform){
var code = sform.form.login_qau.value;
var number = sform.form.surveynumber;
var error=false;
error=isNumber(number);
if(error){
alert('The survey number you provided is impossible. Please try again.');
return false;
}else{
sform.form.action="/web/quality/laboratory/"+number.value+"/login.xhtml?login_qau="+code;
sform.form.submit();
return true;
}
}

function loginQAuDatabase2(sform){
var code = sform.form.login_qau.value;
var number = sform.form.surveynumber;
var error=false;
error=isNumber(number);
if(error){
alert('The survey number you provided is impossible. Please try again.');
return false;
}else{
sform.form.action="/web/quality/laboratory/"+number.value+"/login_approve.xhtml?login_qau="+code;
sform.form.submit();
return true;
}
}






function confirmEmail(button){
var sform = button.form;
document.getElementById('send_mail').value='true';
var r=confirm("Send this email?");
if (r==true)
  {
 sform.submit();
 return true;
  }
else
  {
  return false;
  }
}


function cmsRemoveFile(img,filename){

var conf = confirm('Are you sure you want to remove file? This will permanently remove file:' + filename);
if(conf){
    document.getElementById('removeFile').value=""+filename;
	document.getElementById('removeForm').submit();
}
}




var dtCh= "-";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(field){
 var dtStr= field.value;
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strYear=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strDay=dtStr.substring(pos2+1)
		strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		return false
	}
return true
}


function checkFileTypes(button,types){
	var types_array = types.split(",");
	var value = button.value;
	value = value.slice(value.lastIndexOf(".")+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 checkform2(sform, act){
var message ="";
var error=false;
cleanupTextareas();
if(act!=''){
	sform.action=act;
}
if(error){
alert(message);
sform.submit();
return false;
}else{
sform.submit();
return true;
}
}

/* WAAROM IS DIT NODIG */

function cleanupTextareas(){

var elems = document.getElementsByTagName("textarea");
var i=0;
while(i != elems.length){
if(elems[i].value){
var value = elems[i].value;
value = value.replace(/&/g,"&amp;");
value = value.replace(/"/g,"&quot;");
value = value.replace(/</g,"&lt;");
value = value.replace(/>/g,"&gt;");
elems[i].value = value;
}
i++;
}

}

/* This function replaces the action with the same action for downloading an Excel file. */
function downloadExcel(button){
	var form = button.form;
	form.action = window.location.href.replace(/.xhtml/g,".xls");
	form.target="_blank";
	document.getElementById("output_type").value="xls";
	form.submit();
	form.action = "";
	form.target="";
	document.getElementById("output_type").value="";
}



function selectFiles(box,eqa_id){
 	var boxes = $$('input[class=eqa_'+eqa_id+']');
	
	if(box.checked){

		boxes.each(function(el3){
			if(!el3.checked){
			   el3.checked="checked";
			 }
			});	
	}
	else{
       
	}
}


function addComment(anchor,eqa_case){
	 var td =  $(anchor).getParent();
	 var text2 = $(td).getElement('textarea');
	 if(text2==null){
	 var textarea  = new Element('textarea', {rows: '4', name: 'defaultcomment_new_'+eqa_case});
	 var hidden = new Element('input', {type:'hidden',name:'defaultcomment_new_case',value:eqa_case});
	
	 var button = new Element('input', {type:'image',src:'/shared/images/famfamfam/disk.png',name:'act',onclick:"assessorSubmit(this,'save');"});
	 textarea.setText(' ');
	 textarea.addClass('defaultComment');
	 textarea.injectInside(td);
	hidden.injectInside(td);
     button.injectInside(td);
     }
}


function editComment(anchor,id){
	 var li =  $(anchor).getParent();
	 var pre = $(li).getElement('pre');
	 var span = $(li).getElement('span');
	 var a = $(li).getElement('a');
	 var text = pre.getText();
	 li.removeChild(pre);
	 li.removeChild(span);
	 li.removeChild(a);
	 var a = $(li).getElement('a');
	 li.removeChild(a);
	 var textarea  = new Element('textarea', {rows: '4', name: 'defaultcomment_'+id});
	 var hidden = new Element('input', {type:'hidden',name:'change_default_comment',value:id});
	 var button = new Element('input', {type:'image',src:'/shared/images/famfamfam/disk.png',name:'act',onclick:"assessorSubmit(this,'save');"});
	 textarea.setText(text);
	 textarea.addClass('defaultComment');
	 textarea.injectInside(li);
	 hidden.injectInside(li);
     button.injectInside(li);
}




function deleteComment(anchor,id){

     var del = confirm('Do you wish to delete this default comment? This will not affect the comments already entered for a laboratory.');
	
	 if(del){
	 
		 var li =  $(anchor).getParent();
		 var pre = $(li).getElement('pre');
		 var span = $(li).getElement('span');
		 
		 span.addClass("strikethrough");
		 // REMOVE BUTTONS
		 var a = $(li).getElement('a');
		 li.removeChild(a);
		 var a = $(li).getElement('a');
		 li.removeChild(a);
		 
		 //ADD HIDDEN FIELD
		 var hidden = new Element('input', {type:'hidden',name:'delete_default_comment',value:id});
		 hidden.injectInside(li);
		 
		 // ADD SAVE BUTTON
	     var button = new Element('input', {type:'image',src:'/shared/images/famfamfam/disk.png',name:'act',onclick:"assessorSubmit(this,'save');"});
		 button.injectInside(li);
	 
	 }else{
	 
	 }

}


function deleteRegistration(reg_id,lab_id){
	var conf = confirm("Do you wish to delete this registration from the database. Please only use this for testing. For existing registrations please use the registration state field in the registration edit form.");
    if(conf) window.open("/info/admin/laboratory_details.xhtml?registration_id="+reg_id+"&laboratory_id="+lab_id+"&command=save&savePage=delete_registration","_self");
}


function deleteDatasheet(eqa_id,lab_id){
	var conf = confirm("Do you wish to delete this datasheet from the database. Please only use this for testing. ");
    if(conf) window.open("/info/admin/laboratory_details.xhtml?eqa_id="+eqa_id+"&laboratory_id="+lab_id+"&command=save&savePage=delete_datasheet","_self");
}


function addEQA(registration_id,scheme_id, lab_id){
	var conf = confirm("Do you wish to add the next eqa id to this record.  ");
    if(conf) window.open("/info/admin/laboratory_details.xhtml?registration_id="+registration_id+"&laboratory_id="+lab_id+"&scheme_id="+scheme_id+"&command=save&savePage=add_eqa","_self");
}


