/*
function checkstatus(frmname,obj,bod_fields,descname,ownfield) {
	if (obj.checked) {
		for (i=0; i <bod_fields.length;i++) {
			fieldobj = eval('document.'+ frmname +'.'+bod_fields[i]);
			fieldobjdesc = eval('document.'+ frmname +'.'+bod_fields[i]+'_'+descname);
			if (ownfield)
				fieldobj.disabled = false;
			else
				fieldobjdesc.disabled = false;
		}
	} else {
			for (i=0; i <bod_fields.length;i++) {
				fieldobj = eval('document.'+ frmname +'.'+bod_fields[i]);
				fieldobjdesc = eval('document.'+ frmname +'.'+bod_fields[i]+'_'+descname);
				if (ownfield) {
					fieldobj.disabled = true;
					fieldobj.checked = false;
				}
				fieldobjdesc.disabled = true;
				fieldobjdesc.value = "";
			}
		}
}

function verifycheckstatus(frmname,objname,bod_fields,descname,ownfield) {
	if (!isObject(objname))
		obj = eval('document.'+ frmname +'.'+ objname);
	else
		obj = objname;
	if (obj.checked) {
		for (i=0; i <bod_fields.length;i++) {
			fieldobj = eval('document.'+ frmname +'.'+bod_fields[i]);
			if (descname != '') {
				fieldobjdesc = eval('document.'+ frmname +'.'+bod_fields[i]+'_'+descname);
			}
			if (fieldobj.checked) {
				if (ownfield) {
					fieldobj.disabled = false;
				}
				if (descname != '') {
					fieldobjdesc.disabled = false;
				}
			} else {
				if (descname != '') {
					fieldobjdesc.disabled = true;
				}
				fieldobjdesc.value = "";
			}
		}
	} else {
		for (i=0; i <bod_fields.length;i++) {
			fieldobj = eval('document.'+ frmname +'.'+bod_fields[i]);
			if (descname != '') {
				fieldobjdesc = eval('document.'+ frmname +'.'+bod_fields[i]+'_'+descname);
			}
			if (ownfield) {
				fieldobj.disabled = true;
			}
			fieldobj.checked = false;
			if (descname != '') {
				fieldobjdesc.disabled = true;
				fieldobjdesc.value = "";
			}
		}
	}
}
*/
function decideCheckStatus(frmname,fieldname,obj,ownfield) {
	fieldobj = eval('document.'+ frmname +'.'+fieldname);
	if (obj.checked) {
		if (ownfield=='relapse') {
			for (i=0; i <fieldobj.length;i++) {
				fieldobjvalue = fieldobj[i].value;
				if (fieldobjvalue!='relapse') {
					fieldobj[i].checked = false;
					fieldobj[i].disabled = true;
				}
			}
		} else {
			for (i=0; i <fieldobj.length;i++) {
				fieldobjvalue = fieldobj[i].value;
				if (fieldobjvalue=='relapse') {
					fieldobj[i].checked = false;
					fieldobj[i].disabled = true;
				}
			}
		}
	} else {
		if (ownfield=='relapse') {
			for (i=0; i <fieldobj.length;i++) {
				fieldobjvalue = fieldobj[i].value;
				if (fieldobjvalue!='relapse') {
					fieldobj[i].checked = false;
					fieldobj[i].disabled = false;
				}
			}
		} else {
			var counter = 4;
			
			for (i=0; i <fieldobj.length;i++) {
				fieldobjvalue = fieldobj[i].value;
				if (fieldobjvalue=='chemo') {
					if (!fieldobj[i].checked)
						counter--;
				}
				if (fieldobjvalue=='surgi') {
					if (!fieldobj[i].checked)
						counter--;
				}
				if (fieldobjvalue=='radio') {
					if (!fieldobj[i].checked)
						counter--;
				}
				if (fieldobjvalue=='transplant') {
					if (!fieldobj[i].checked)
						counter--;
				}
				if (fieldobjvalue=='relapse') {
					var temp_i = i; 
				}
			}
			if (counter == 0) {
				fieldobj[temp_i].checked = false;
				fieldobj[temp_i].disabled = false;
			}
		}
	}
}

function isFunction(a) {
		return typeof a == 'function';
}

function isObject(a) {
	 return (typeof a == 'object' && !!a) || isFunction(a);
}

function verifystatus(frmname,objname,fieldnames,clearvalues) {
	if (!isObject(objname))
		obj = eval('document.'+ frmname +'.'+ objname);
	else
		obj = objname;
	var arrfalse = new Array(1);
	var arrtrue = new Array(1);
	arrfalse[0] = false;
	arrtrue[0] = true;
	for (i=0; i <fieldnames.length-1;i++) {
		arrtrue = arrtrue.concat([true]);
		arrfalse = arrfalse.concat([false]);
	}
	
	if (obj.checked) {
		if (clearvalues) 
			update_fields_status(frmname,fieldnames,arrtrue,arrtrue); 
		else
			update_fields_status(frmname,fieldnames,arrtrue,arrfalse); 
	} else {
		if (clearvalues) 
			update_fields_status(frmname,fieldnames,arrfalse,arrtrue); 
		else
			update_fields_status(frmname,fieldnames,arrfalse,arrfalse); 
	}
}

// This function will update the status of the field types
// attributes:
// (string) frmname : (string) The name of the form
// (array) fieldnames : (string) The field type names
// (array) updatefieldstatus : (true/false) Enable the field types
// (array) clearfieldcontents : (true/false) To clear the field type content
function update_fields_status(frmname,fieldnames,updatefieldstatus,clearfieldcontents) {

	for (i=0; i <fieldnames.length;i++) {
		fieldobj = eval('document.'+ frmname +'.'+fieldnames[i]);
		if (updatefieldstatus[i]) {
			reset_value(fieldobj,clearfieldcontents[i]);
			fieldobj.disabled = false;
		} else {
			reset_value(fieldobj,clearfieldcontents[i]);
			fieldobj.disabled = true;
		}
	}
}

function reset_value(fieldobj,clearfieldcontents) {
	// This will try to clear the content of the field type 
	if (clearfieldcontents) {
		if (fieldobj.type == 'checkbox') { // checkbox
			fieldobj.checked = false;
		} else if (fieldobj.value) {// text, password, hidden
			fieldobj.value = "";
		} else if (fieldobj.options) {// select
			fieldobj.selectedIndex = "";
		} else if (fieldobj.length > 0) {// radiobuton
			for (var n_index = 0; n_index < fieldobj.length; n_index++)
				if (fieldobj[n_index].checked) {
					fieldobj[n_index].checked = false;
					break;
				}
		}
	}
}

function toggle_checked(frmname,bod_fields,toggle_enable) {
	for (i=0; i <bod_fields.length;i++) {
		fieldobj = eval('document.'+ frmname +'.'+bod_fields[i]);
		if (toggle_enable) {
			fieldobj.checked = true;
		} else {
			fieldobj.checked = false;
		}
	}
}

function compute_gvhd_grade(frmname) {
	var currArg = new Array(3);
	fieldobj = eval('document.'+ frmname +'.transplant_treatment_acute_gvhd_skin_id');
	currArg[0] = fieldobj.value;
	fieldobj = eval('document.'+ frmname +'.transplant_treatment_acute_gvhd_bilirubin_id');
	currArg[1] = fieldobj.value;
	fieldobj = eval('document.'+ frmname +'.transplant_treatment_acute_gvhd_intestinal_id');
	currArg[2] = fieldobj.value;
	var grade_value = 0;
	var add_grade_value = 0;
	//Additional computation, if there is a higher stage in either 3 criterias, take the highest stage to determine the grade
	
	if (parseInt(currArg[0]) <= parseInt(currArg[1])) {
		if (parseInt(currArg[1]) <= parseInt(currArg[2])) {
			add_grade_value = parseInt(currArg[2]);
		} else {
			add_grade_value = parseInt(currArg[1]);
		}
	} else {
		if (parseInt(currArg[0]) <= parseInt(currArg[2])) {
			add_grade_value = parseInt(currArg[2]);
		} else {
			add_grade_value = parseInt(currArg[0]);
		}
	}
	//Original Computation Logic, if there is a matched on the matrix, use the matched instead of the additional computation logic above.
	if (((currArg[0]=='1')||(currArg[0]=='2')) && (currArg[1]=='0') && (currArg[2]=='0')) {
		grade_value = 1;
	}
	if (((currArg[0]=='1')||(currArg[0]=='2')||(currArg[0]=='3')) && (currArg[1]=='1') && (currArg[2]=='1')) {
		grade_value = 2;
	}
	if (((currArg[0]=='2')||(currArg[0]=='3')) && ((currArg[1]=='2') ||(currArg[1]=='3')) && ((currArg[2]=='2') || (currArg[2]=='3'))) {
		grade_value = 3;
	}
	if ((currArg[0]=='4') && (currArg[1]=='4') && (currArg[2]=='4')) {
		grade_value = 4;
	}

	if (grade_value == 0) {
		grade_value = add_grade_value;
	}

	gradeobj = eval('document.'+ frmname +'.transplant_treatment_acute_gvhd_grade_id'); 
	gradeobj.selectedIndex=grade_value+1;
}

function compare_hla_main(frmname) {
	var currAg = new Array(2);
	currAg[0] = 0;
	currAg[1] = 0;
	
	currAg = compare_hla(frmname,currAg,['transplant_treatment_donor_a','transplant_treatment_donor_1a'],['transplant_treatment_patient_a','transplant_treatment_patient_1a']);
	currAg = compare_hla(frmname,currAg,['transplant_treatment_donor_b','transplant_treatment_donor_1b'],['transplant_treatment_patient_b','transplant_treatment_patient_1b']);
	currAg = compare_hla(frmname,currAg,['transplant_treatment_donor_c','transplant_treatment_donor_1c'],['transplant_treatment_patient_c','transplant_treatment_patient_1c']);
	currAg = compare_hla(frmname,currAg,['transplant_treatment_donor_drbi','transplant_treatment_donor_1drbi'],['transplant_treatment_patient_drbi','transplant_treatment_patient_1drbi']);
	currAg = compare_hla(frmname,currAg,['transplant_treatment_donor_dq','transplant_treatment_donor_1dq'],['transplant_treatment_patient_dq','transplant_treatment_patient_1dq']);
	currAg = compare_hla(frmname,currAg,['transplant_treatment_donor_dp','transplant_treatment_donor_1dp'],['transplant_treatment_patient_dp','transplant_treatment_patient_1dp']);
	agobj = eval('document.'+ frmname +'.transplant_treatment_mmag'); 
	agobj.value=currAg[0]+'/'+currAg[1];
	hlaobj = eval('document.'+ frmname +'.transplant_treatment_hla_id'); 
	if (currAg[0] > 0) {
		hlaobj.selectedIndex=2;
	} else {
		hlaobj.selectedIndex=1;
	}
}

function compare_hla(frmname,currAg,fromfields,tofields) {

	var thisAg = currAg;
	var fromfieldval = "",tofieldval = "";
	var skipmatchedindex = null;
	for (i=0; i <fromfields.length;i++) {
		fieldobj = eval('document.'+ frmname +'.'+fromfields[i]);
		fromfieldval = fieldobj.value;
		if (fromfieldval.indexOf('-') >= 0 || fromfieldval == "") {
			continue;
		} else {
			matched = false;
			for (j=0; j <tofields.length;j++) {
				if ((skipmatchedindex != j) || (skipmatchedindex == null)){
					tofieldobj = eval('document.'+ frmname +'.'+tofields[j]);
					tofieldval = tofieldobj.value;
					if (tofieldval.indexOf('-') >= 0 || tofieldval == "") {
						continue;
					} else {
						if (fromfieldval.substring(0,6) == tofieldval.substring(0,6)) {
							matched = true;
							skipmatchedindex = j;
						}
					}
				}
			}
			if (matched) {
				thisAg[1] += 1;
			} else {
				thisAg[0] += 1;
				thisAg[1] += 1;
			}
		}
	}
	return thisAg;
}

function exclusive_busulphan_iv() {
	busulphan_oral_obj = eval('document.transplantfrm.transplant_treatment_busulphan_oral');
	busulphan_iv_obj = eval('document.transplantfrm.transplant_treatment_busulphan_iv');

	if (busulphan_iv_obj.checked){
		toggle_checked('transplantfrm',['transplant_treatment_busulphan_oral'],false); 
		document.transplantfrm.transplant_treatment_busulphan_oral_dose.disabled=true;
	}
}

function exclusive_busulphan_oral() {
	busulphan_oral_obj = eval('document.transplantfrm.transplant_treatment_busulphan_oral');
	busulphan_iv_obj = eval('document.transplantfrm.transplant_treatment_busulphan_iv');

	if (busulphan_oral_obj.checked){
		toggle_checked('transplantfrm',['transplant_treatment_busulphan_iv'],false); 
		document.transplantfrm.transplant_treatment_busulphan_iv_dose.disabled=true;
	}
}

function toggle_mets(obj) {
	if (!obj) {
		obj = eval('document.diagnosisfrm.diagnosis_st_mets');
	}
	if (obj.value=='1'){
		update_fields_status('diagnosisfrm',['diagnosis_st_mets_site'],[true],[false]); 
	} else {
		update_fields_status('diagnosisfrm',['diagnosis_st_mets_site'],[false],[false]); 
	}
}

function toggle_relationship(obj) {
	if (!obj) {
		obj = eval('document.transplantfrm.transplant_treatment_donor_type_id');
	}
	if (obj.value=='0'){
		update_fields_status('transplantfrm',['transplant_treatment_relationship'],[true],[false]); 
	} else {
		update_fields_status('transplantfrm',['transplant_treatment_relationship'],[false],[true]); 
	}
}

function toggle_primary(obj) {
	if (!obj) {
		obj = eval('document.diagnosisfrm.diagnosis_st_primary_id');
	}
	if (obj.value=='1' || obj.value=='2'){
		update_fields_status('diagnosisfrm',['diagnosis_st_direct_ext_site','diagnosis_st_ln','diagnosis_st_mets','diagnosis_st_mets_site','diagnosis_st_mets_site1','diagnosis_st_mets_site2','diagnosis_st_mets_site3'],[false,false,false,false,false,false,false],[false,false,false,false,false,false,false]); 
	} else {
		update_fields_status('diagnosisfrm',['diagnosis_st_direct_ext_site','diagnosis_st_ln','diagnosis_st_mets','diagnosis_st_mets_site','diagnosis_st_mets_site1','diagnosis_st_mets_site2','diagnosis_st_mets_site3'],[true,true,true,true,true,true,true],[false,false,false,false,false,false,false]); 
	}
}

function toggle_divs(showDivs,HideDivs) {
	for (i=0; i <showDivs.length;i++) {
		divobj = eval("document.getElementById('"+ showDivs[i] +"')");
		divobj.style.display = '';
	}
	for (i=0; i <HideDivs.length;i++) {
		divobj = eval("document.getElementById('"+ HideDivs[i] +"')");
		divobj.style.display = 'none';
	}
}

function checkbodfrm(frmname,bod_fields,bod_fields_desc,descname) {
	var msg = "";
	for (i=0; i <bod_fields.length;i++) {
		fieldobj = eval('document.'+ frmname +'.'+bod_fields[i]);
		//alert(bod_fields.length+' '+bod_fields[i]+' '+fieldobj.checked );
		if (fieldobj.checked) {
			fieldobjdesc = eval('document.'+ frmname +'.'+bod_fields[i]+'_'+descname);
			if ((fieldobjdesc.value == "") || (fieldobjdesc.value.length >1000)) {
				msg = msg + "Either you have not enter the text for "+ bod_fields_desc[i] +"\n Or you have exceed the 1000 characters limit.\n";
			}
		}
	}
	return msg;
}

function checkdiagnosisfrm() {
	var msg = "";

	if (v.exec()) {
		//Proceed to check other fields.
		if (currDiagnosisType != 1) {
		msg = checkbodfrm('diagnosisfrm',['diagnosis_bod_radiological_ct','diagnosis_bod_radiological_mri','diagnosis_bod_radiological_bonescan','diagnosis_bod_radiological_pet','diagnosis_bod_radiological_xray','diagnosis_bod_radiological_ultrasound','diagnosis_bod_radiological_others'],['Radiological CT','Radiological MRI','Radiological Bonescan','Radiological PET','Radiological Xray','Radiological Ultrasound','Radiological Others'],'desc');
		}
		msg = msg + checkbodfrm('diagnosisfrm',['diagnosis_bod_cytology','diagnosis_bod_bm_apirate','diagnosis_bod_trephine','diagnosis_bod_biopsy'],['Cytology','BM Apirate','Trephine','Biopsy'],'lab');
		if (currDiagnosisType == 2) {
			copyStageValue('diagnosisfrm','ll_stage_temp','diagnosis_ll_stage');
		}
		if (currDiagnosisType == 3) {
			copyStageValue('diagnosisfrm','st_stage_temp','diagnosis_st_stage');
		}
		if (msg == "") {
			if (currDiagnosisType == 1) {
				if (w.exec()) {
					DisableEnableForm('diagnosisfrm',false);
					return true;
				} else {
					return false;
				}
			}
			DisableEnableForm('diagnosisfrm',false);
			return true
		} else {
			alert(msg);
			return false;
		}
	} else {
		return false;
	}
}

function copyStageValue(frmname,frmfield,frmactualfield) {
	//Copy the staging options to the stage hidden field to be saved into the db.
	frmobj = eval('document.'+ frmname +'.'+ frmfield);
	var tempStr = "";
	for(i=0;i<frmobj.length;i++){
		if (frmobj[i].checked) {
			if (tempStr != "")
				tempStr += ",";
			tempStr += frmobj[i].value;
		}
	}
	frmHiddenobj = eval('document.'+ frmname +'.'+ frmactualfield);
	frmHiddenobj.value = tempStr;
}

function DisableEnableForm(frmname,how){
	frmobj = eval('document.'+ frmname +'.elements');
  for(i=0;i<frmobj.length;i++){
    frmobj[i].disabled = how;
  }
}


function checkchemofrm() {
	var msg = "";
	if (v.exec()) {
		//Proceed to check other fields.
		if (compareDates(document.chemofrm.chemo_treatment_enddate.value,"d-M-yyyy",document.chemofrm.chemo_treatment_startdate.value,"d-M-yyyy") == 0) {
			msg = "Please make sure the start date is earlier than the end date";
		}
		if (msg == "") {
			DisableEnableForm('chemofrm',false);
			return true
		} else {
			alert(msg);
			return false;
		}
	} else {
		return false;
	}
}

function checkradiofrm() {
	var msg = "";
	if (v.exec()) {
		//Proceed to check other fields.
		if (compareDates(document.radiofrm.radio_treatment_enddate.value,"d-M-yyyy",document.radiofrm.radio_treatment_startdate.value,"d-M-yyyy") == 0) {
			msg = "Please make sure the start date is earlier than the end date";
		}
		if (msg == "") {
			DisableEnableForm('radiofrm',false);
			return true
		} else {
			alert(msg);
			return false;
		}
	} else {
		return false;
	}
}

function checkpatientfrm() {
	if (v.exec()) {
			DisableEnableForm('patientfrm',false);
			return true
	} else {
		return false;
	}
}

function checksurgicalfrm() {
	if (v.exec()) {
			DisableEnableForm('surgicalfrm',false);
			return true
	} else {
		return false;
	}
}

function checktransplantfrm() {
	if (v.exec()) {
			DisableEnableForm('transplantfrm',false);
			return true
	} else {
		return false;
	}
}

function checkrequestfrm() {
	if (v.exec()) {
			copyStageValue('requestfrm','desc_statistics_id_temp','desc_statistics_id');
			DisableEnableForm('requestfrm',false);
			if (document.requestfrm.commit) document.requestfrm.commit.disabled = true;
			return true
	} else {
		return false;
	}
}

function checkdatarequestfrm() {
	if (v.exec()) {
			DisableEnableForm('datarequestfrm',false);
			return true;
	} else {
		return false;
	}
}

function ll_stage_system_change_func( ll_stage_system ) {
	var ll_stage = ll_stage_system.value;
	
	if( ll_stage == "" || ll_stage == "0" || ll_stage == "98") {
		jQuery("#ll_stagediv").html("");
		jQuery("#st_stagediv").html("");
		return;
	}//end if
	
	var iccc_id = jQuery("#diagnosis_iccc_id").val();
	
		if (jQuery("#ll_stagediv").parent().parent().parent().parent().css("display") != "none") 
			
			new Ajax.Updater('ll_stagediv', '/diagnoses/gen_llstages?id=' + iccc_id + '&ll_stage=' + ll_stage, {
				asynchronous: true,
				evalScripts: true
			});
		else {
			
			new Ajax.Updater('st_stagediv', '/diagnoses/gen_llstages?id=' + iccc_id + '&ll_stage=' + ll_stage, {
				asynchronous: true,
				evalScripts: true
			});
		}
	
}
