//////////////////////////////////									
/// V A R I A B L E S ////////////
//////////////////////////////////
var page		= 'dgn';
var divFilter, effFilter;
var grpCurrentId;
var grpCurrentName;
var grpPopupId, grpPopupName, grpPopupCode, grpPopupParentId, grpPopupParentName, grpPopupSynonym, grpPopupSynonym2, grpPopupSynonym3, grpPopupSynonym4;
var dgnCurrentId, occCurrentId;
var httpUrl			= "../http/";
var httpDiagnosis 	= "../http/diagnoses.http.php";
var httpOccupation	= "../http/occupation.http.php";
var httpReference	= "../http/reference.http.php";
var httpRadiology	= "../http/radiology.http.php";
var httpAgents		= "../http/agents.http.php";

//some old functions in functions.js use this var
if(document.all)	var str_class 	= "className";	
else				var str_class 	= "class";	

window.addEvent('domready', function() {
	//elements
	var divFilter		= $('Filter');
	
	//effects								 
	effFilter			= new Fx.Tween('Filter', {property: 'opacity', duration: 700, transition: Fx.Transitions.Bounce.easeInOut}); 
	
	//Set Autocomple Popup
	setAutoComplete();
});


//////////////////////////////////									
/// P A G E //////////////////////
//////////////////////////////////
function setPage(thePage){
	page	= thePage;	
}

//////////////////////////////////									
/// P O P U P ////////////////////
//////////////////////////////////
function popup(type, id, parent){
	
	if($chk($(type + 'Popup'))){
		//show Filter div
		effFilter.start(0, 0.8);
	}
	
	//Group
	if(type == 'grp'){
		//set variables
		grpPopupId					= id;
		grpPopupName				= '';
		grpPopupCode				= '';
		grpPopupParent				= 0;
		grpPopupSynonym				= '';
		grpPopupSynonym2			= '';
		grpPopupSynonym3			= '';
		grpPopupSynonym4			= '';
		grpPopupHistology			= '';
		
		//clear
		resetForm(type + 'Form');
		
		//parent
		if($('grp' + id) && $('grp' + id).getParent()){
			if($('grp' + id).getParent().id.substr(0,3) == 'sub'){
				grpPopupParentId	= $('grp' + id).getParent().id.substr(3);
			}else{
				grpPopupParentId	= 0;
				grpPopupParentName	= 'none';
			}
		}
		
		//LoadGroupParent select
		loadGroupParent(grpPopupParentId);
		
		
		if($chk($('grp' + id + '_name')))
			grpPopupName			= $('grp' + id + '_name').get('text');
		
		if(page == 'dgn' && $chk($('grp' + id + '_values'))){
			$('grp_synonym').value	= $('grp' + id + '_values').name;
			$('grp_synonym2').value	= $('grp' + id + '_values').value;
			$('grp_synonym3').value	= $('grp' + id + '_values').title;
			$('grp_synonym4').value	= $('grp' + id + '_values').alt;
			$('grp_histology').value= $('grp' + id + '_histology').value;
		}
		
		if(page == 'occ' && $chk($('grp' + id + '_name')))
			$('grp_code').value		= $('grp' + id + '_code').get('text');
		
		$('grp_id').value			= grpPopupId;
		$('grp_name').value			= grpPopupName;
	
		
		//show popup
		$(type + 'Popup').style.opacity = '0';
		$(type + 'Popup').style.display = 'block';
		$(type + 'Popup').fx = new Fx.Tween(type + 'Popup', {property: 'opacity', duration: 700, transition: Fx.Transitions.Bounce.easeInOut}).start(0, 1);
	}
	
	//Diagnosis
	if(type == 'dgn'){
		//clear
		resetForm(type + 'Form');
		
		//parent
		if($empty(parent) || parent == 0)	parent = 0;	
		
		//LoadDiagnosisGroup
		loadDiagnosisGroup(parent);
		
		//show popup
		$(type + 'Popup').style.opacity = '0';
		$(type + 'Popup').style.display = 'block';
		$(type + 'Popup').fx = new Fx.Tween(type + 'Popup', {property: 'opacity', duration: 700, transition: Fx.Transitions.Bounce.easeInOut}).start(0, 1);
	}
	
	//Occupation
	if(type == 'occ'){
		//clear
		resetForm(type + 'Form');
		
		//parent
		if($empty(parent) || parent == 0)	parent = 0;	
		
		//LoadDiagnosisGroup
		loadOccupationGroup(parent);
		
		//show popup
		$(type + 'Popup').style.opacity = '0';
		$(type + 'Popup').style.display = 'block';
		$(type + 'Popup').fx = new Fx.Tween(type + 'Popup', {property: 'opacity', duration: 700, transition: Fx.Transitions.Bounce.easeInOut}).start(0, 1);
	}
	
	//Occupation
	if(type == 'rad'){
		//clear
		resetForm(type + 'Form');
		
		//parent
		if($empty(parent) || parent == 0)	parent = 0;	
		
		//LoadDiagnosisGroup
		loadRadiologyGroup(parent);
		
		//show popup
		$(type + 'Popup').style.opacity = '0';
		$(type + 'Popup').style.display = 'block';
		$(type + 'Popup').fx = new Fx.Tween(type + 'Popup', {property: 'opacity', duration: 700, transition: Fx.Transitions.Bounce.easeInOut}).start(0, 1);
	}
	
	//Agents
	if(type == 'ags'){
		//clear
		resetForm(type + 'Form');
		
		//show popup
		$(type + 'Popup').style.opacity = '0';
		$(type + 'Popup').style.display = 'block';
		$(type + 'Popup').fx = new Fx.Tween(type + 'Popup', {property: 'opacity', duration: 700, transition: Fx.Transitions.Bounce.easeInOut}).start(0, 1);
	}
	
}

function cancel(type){
	//hide Filter & popup
	effFilter.start(0.8, 0);
	if(type.length <= 3){
		$(type + 'Popup').fx = new Fx.Tween(type + 'Popup', {property: 'opacity', duration: 700, transition: Fx.Transitions.Bounce.easeInOut}).start(1, 0);
	}else if(document.getElementById(type)){
		toggleAllSelectBoxes(0);
		$(type).fx = new Fx.Tween(type, {property: 'opacity', duration: 700, transition: Fx.Transitions.Bounce.easeInOut}).start(1, 0);
	}
}

function popupSubmit(type, form){
	if(formCheck(form,true)){
		if(type == 'grp'){
			//get variables
			grpPopupId		= form.grp_id.value;
			grpPopupName	= form.grp_name.value;
			
			if(page == 'dgn'){ 
				var url			= httpDiagnosis;
				var reqStr		= "request=postGroup&id=" + $('grp_id').value + "&parent=" + $('grp_parent').value + "&name=" + $('grp_name').value + "&synonym=" + $('grp_synonym').value + "&synonym2=" + $('grp_synonym2').value + "&synonym3=" + $('grp_synonym3').value + "&synonym4=" + $('grp_synonym4').value + "&histology=" + $('grp_histology').value;
			}
			if(page == 'occ'){
				grpPopupCode	= form.grp_code.value
				var url			= httpOccupation;
				var reqStr		= "request=postGroup&id=" + $('grp_id').value + "&parent=" + $('grp_parent').value + "&name=" + $('grp_name').value + "&code=" + $('grp_code').value;
			
			}
			if(page == 'rad'){ 
				var url			= httpRadiology;
			}
			
			//ajax
			new Request({
				url: url,
				onSuccess: function(responseText) {
					loadGroupTree();
					cancel(type);
				}, 
				onFailure: function(responseText) {
					alert('Request failed.');
				}
			}).send(reqStr);
		
		} // Group
		
		//Diagnosis
		if(type == 'dgn'){	
			//ajax
			var reqStr		= "request=postDiagnosis&id=" + $('dgn_id').value + "&parent_id=" + $('dgn_group').value + "&name=" + $('dgn_name').value + "&synonym=" + $('dgn_synonym').value + "&synonym2=" + $('dgn_synonym2').value + "&synonym3=" + $('dgn_synonym3').value + "&synonym4=" + $('dgn_synonym4').value + "&histology=" + $('dgn_histology').value;
			new Request({
				url: httpDiagnosis,
				onComplete: function(responseText) {
					if(responseText.length < 15)
					alert(responseText);
					addDiagnosis(responseText);
					cancel(type);
				}
				}).send(reqStr);
		
		} // Diagnosis
		
		//Occupation
		if(type == 'occ'){	
			//ajax
			var reqStr		= "request=postOccupation&id=" + $('occ_id').value + "&parent_id=" + $('occ_group').value + "&name=" + $('occ_name').value + "&code=" + $('occ_code').value;
			new Request({
				url: httpOccupation,
				onComplete: function(responseText) {
					if(responseText.length < 15)
					addOccupation(responseText);
					cancel(type);
				}
			}).send(reqStr);
		
		} // Occupation
		
		//Radiology
		if(type == 'rad'){	
			//ajax
			var reqStr		= "request=postRadiology&id=" + $('rad_id').value + "&group_id=" + $('rad_group').value + "&name=" + $('rad_name').value;
			new Request({
				url: httpRadiology,
				onComplete: function(responseText) {
					if(responseText.length < 15)
						addRadiology(responseText);
					//alert(responseText);
					cancel(type);
				}
			}).send(reqStr);
		
		} // Radiology
		
		//Radiology
		if(type == 'ags'){	
			//ajax
			var reqStr		= "request=postAgent&id=" + $('ags_id').value + "&name=" + $('ags_name').value;
			new Request({
				url: httpAgents,
				onComplete: function(responseText) {
					if(responseText.length < 15)
						addAgent(responseText);
					//alert(responseText);
					cancel(type);
				}
			}).send(reqStr);
		
		} // Radiology
		
		
	} // formCheck
}

//////////////////////////////////									
/// Delete ///////////////////////
//////////////////////////////////
function remove(type, id){
	if(confirm('Delete the selected item?')){
		if(type == 'grp'){
			//ajax
			var reqStr		= "request=deleteGroup&id=" + id;
			new Request({
				url: httpDiagnosis,
				onComplete: function() {
					loadGroupTree();
				}
			}).send(reqStr);	
		}//type group
		
		if(type == 'dgn'){
			//ajax
			var reqStr		= "request=deleteDiagnosis&id=" + id;
			new Request({
				url: httpDiagnosis,
				onSuccess: function() {
					if($defined($(type + id))){
						$(type + id).fx = new Fx.Slide(type + id, {link: 'ignore'});
						$(type + id).fx.slideOut();
					}
				}
			}).send(reqStr);	
		}
		
		if(type == 'occ'){
			//ajax
			var reqStr		= "request=deleteOccupation&id=" + id;
			new Request( {
				url: httpOccupation,
				onComplete: function() {
					if($defined($(type + id))){
						$(type + id).fx = new Fx.Slide(type + id, {link: 'ignore'});
						$(type + id).fx.toggle();
					}
				}
			}).send(reqStr);	
		}
		
		if(type == 'rad'){
			//ajax
			var reqStr		= "request=deleteRadiologyp&id=" + id;
			new Request( {
				url: httpRadiology,
				onComplete: function() {
					if($defined($(type + id))){
						$(type + id).fx = new Fx.Slide(type + id, {link: 'ignore'});
						$(type + id).fx.toggle();
					}
				}
			}).send(reqStr);	
		}
		
	}//confirm
}


//////////////////////////////////									
/// Main Content Toggle //////////
//////////////////////////////////
function mainContentToggle(){
	var topTree = $('mainContentContainer').getElements('div[class^=row]');
	var node;
	var trigger;
	
	topTree.each(function(element) {
		
		//Dropdown
		node = element.getNext();
		if($defined(node) && node.hasClass('subrow')){
			trigger = element.getElement('a');
			
			node.fx = new Fx.Slide(node,{link: 'ignore', onComplete: function(){ if(this.wrapper.offsetHeight != 0) this.wrapper.setStyle('height', 'auto');	}});
			
			//Default closed?
			if($defined(node.title) && node.title == 'closed')
				node.fx.hide();
			
			trigger.addEvent('click', function(e){
				this.getParent().getNext().firstChild.fx.toggle();
			});
		}

	});	
}

//////////////////////////////////									
/// Load Related List ////////////
//////////////////////////////////
function loadRelatedList(type){	
		
		// Diagnoses
		if(type == 'dgn'){	
			//Empty container
			//$('relatedDiagnosesListContainer').empty().addClass('ajax-loading');
			
			var reqStr		= "request=relatedDiagnosesList&filter=" + $('relatedDiagnosesFilter').value;
			new Request( {
				url: httpDiagnosis,
				'link': 'cancel',
				onComplete: function(response) {
					//$('relatedDiagnosesListContainer').removeClass('ajax-loading');
					$('relatedDiagnosesListContainer').set('html', response);
				}
			}).send(reqStr);
		} // diagnoses
		
		// Occupations
		if(type == 'occ'){	
			//Empty container
			//$('relatedOccupationsListContainer').empty().addClass('ajax-loading');
			
			var reqStr		= "request=relatedOccupationsList&filter=" + $('relatedOccupationsFilter').value;
			new Request( {
				url: httpOccupation,
				'link': 'cancel',
				onComplete: function(response) {
					//$('relatedOccupationsListContainer').removeClass('ajax-loading');
					$('relatedOccupationsListContainer').set('html', response);
				}
			}).send(reqStr);
		} // Occupations
		
		// Radiology
		if(type == 'rad'){	
			//Empty container
			//$('relatedRadiologysListContainer').empty().addClass('ajax-loading');
			
			var reqStr		= "request=relatedRadiologysList&filter=" + $('relatedRadiologysFilter').value;
			new Request( {
				url: httpRadiology,
				'link': 'cancel',
				update: 'relatedRadiologysListContainer',
				onComplete: function(response) {
					//$('relatedRadiologysListContainer').removeClass('ajax-loading');
					$('relatedRadiologysListContainer').set('html', response);
				}
			}).send(reqStr);
		} // Radiology
}

//////////////////////////////////									
/// Add Relation /////////////////
//////////////////////////////////
function addRelation(type,page,id){
	
	//Add Related Diagnosis
	if(type == 'dgn'){
		if($defined($('relatedDiagnosesList'))){
			if($('relatedDiagnosesList').value.length > 0){
				var reqStr		= "request=addRelation&page=" + page + "&diagnosis_id= " + $('relatedDiagnosesList').value + "&id=" + id;
				new Request( {
					url: httpDiagnosis,
					'link': 'cancel',
					onComplete: function(responseText) {
						$('relatedDiagnosesContainer').innerHTML += responseText;
					}
				}).send(reqStr);
			}
		}
		// List doesn't exist
		else{
			alert("The request can not be completed.");
		}
	}
	
	//Add Related Occupation
	if(type == 'occ'){ 
		if($defined($('relatedOccupationsList'))){
			if($('relatedOccupationsList').value.length > 0){ 
				var reqStr		= "request=addRelation&page=" + page + "&occupation_id= " + $('relatedOccupationsList').value + "&id=" + id;
				new Request( {
					url: httpOccupation,
					'link': 'cancel',
					onComplete: function(responseText) { 
						$('relatedOccupationsContainer').innerHTML += responseText;
					}
				}).send(reqStr);
			}
		}
		// List doesn't exist
		else{
			alert("The request can not be completed.");
		}
	}
	
	//Add Related Occupation
	if(type == 'rad'){ 
		if($defined($('relatedRadiologysList'))){
			if($('relatedRadiologysList').value.length > 0){ 
				var reqStr		= "request=addRelation&page=" + page + "&radiology_id= " + $('relatedRadiologysList').value + "&id=" + id;
				new Request( {
					url: httpRadiology,
					'link': 'cancel',
					onComplete: function(responseText) { 
						$('relatedRadiologysContainer').innerHTML += responseText;
					}
				}).send(reqStr);
			}
		}
		// List doesn't exist
		else{
			alert("The request can not be completed.");
		}
	}
	
}

//////////////////////////////////									
/// Delete Relation //////////////
//////////////////////////////////
function deleteRelation(type,page,id,id2){
	if(confirm('Delete the relation?')){
		//Delete Related Diagnosis
		if(type == 'dgn'){
				var reqStr		= "request=deleteRelation&page=" + page + "&diagnosis_id= " + id + "&id=" + id2;
				new Request( {
					url: httpDiagnosis,
					'link': 'cancel',
					onComplete: function(responseText) {
						//Delete row
						if($defined($(type + 'Related' + id))){
							$(type + 'Related' + id).fx = new Fx.Slide(type + 'Related' + id, {link: 'ignore'});
							$(type + 'Related' + id).fx.toggle();	
						}
								
					}
				}).send(reqStr);
		}
		
		//Delete Related Occupation
		if(type == 'occ'){
				var reqStr		= "request=deleteRelation&page=" + page + "&occupation_id= " + id + "&id=" + id2;
				new Request( {
					url: httpOccupation,
					'link': 'cancel',
					onComplete: function(responseText) {
						//Delete row
						if($defined($(type + 'Related' + id))){
							$(type + 'Related' + id).fx = new Fx.Slide(type + 'Related' + id, {link: 'ignore'});
							$(type + 'Related' + id).fx.toggle();	
						}
								
					}
				}).send(reqStr);
		}
		
		//Delete Related Occupation
		if(type == 'rad'){
				var reqStr		= "request=deleteRelation&page=" + page + "&radiology_id= " + id + "&id=" + id2;
				new Request( {
					url: httpRadiology,
					'link': 'cancel',
					onComplete: function(responseText) {
						//Delete row
						if($defined($(type + 'Related' + id))){
							$(type + 'Related' + id).fx = new Fx.Slide(type + 'Related' + id, {link: 'ignore'});
							$(type + 'Related' + id).fx.toggle();	
						}
								
					}
				}).send(reqStr);
		}
		
	}
}

//////////////////////////////////									
/// Set AutoComplete /////////////
//////////////////////////////////
function setAutoComplete(){
	
	if($defined($('refDiagnosis'))){
		new Autocompleter.Request.JSON('refDiagnosis', httpReference, {
			'postVar': 'refDiagnosis',
			minLength: 3	
		});
	}
	if($defined($('srcDiagnosis'))){
		var url	= 'http/diagnoses.http.php'; //HOMEPAGE
		new Autocompleter.Request.JSON('srcDiagnosis', url, {
			'postVar': 'refDiagnosis',
			minLength: 3
		});
	}
	if($defined($('refOccupation'))){
		var url	= 'http/reference.http.php';
		new Autocompleter.Request.JSON('refOccupation', httpReference, {
			'postVar': 'refOccupation',
			minLength: 3	
		});
	}
	if($defined($('srcOccupation'))){
		var url	= 'http/occupation.http.php'; //HOMEPAGE
		new Autocompleter.Request.JSON('srcOccupation', url, {
			'postVar': 'refOccupation',
			minLength: 3
		});
	}
	if($defined($('srcAgent'))){
		var url	= 'http/agents.http.php'; //HOMEPAGE
		new Autocompleter.Request.JSON('srcAgent', url, {
			'postVar': 'refAgents',
			minLength: 3	
		});
	}
	if($defined($('refAgent'))){
		new Autocompleter.Request.JSON('refAgent', httpReference, {
			'postVar': 'refAgents',
			minLength: 3	
		});
	}
	if($defined($('dgnRefArticle'))){
		new Autocompleter.Request.JSON('dgnRefArticle', httpReference, {
			'postVar': 'refArticle',
			minLength: 3	
		});
	}
	if($defined($('occRefArticle'))){
		new Autocompleter.Request.JSON('occRefArticle', httpReference, {
			'postVar': 'refArticle',
			minLength: 3	
		});
	}
}

//////////////////////////////////									
/// My Alert /////////////////////
//////////////////////////////////
function myAlert(title, text){
		
		//Set text
		if(!$empty(title)) 	$('myAlertTitle').set('text', title);
		if(!$empty(text)) 	$('myAlertText').set('text', text);
		
		//show Filter
		if($chk($('myAlertPopup'))){
			//show Filter div
			effFilter.start(0, 0.8);
		}
		
		//show popup
		$('myAlertPopup').style.opacity = '0';
		$('myAlertPopup').style.display = 'block';
		$('myAlertPopup').fx = new Fx.Tween('myAlertPopup', {property: 'opacity', duration: 700, transition: Fx.Transitions.Bounce.easeInOut}).start(0, 1);

}


