//////////////////////////////////									
/// DOM Ready ////////////////////
//////////////////////////////////
var dgnBrowse 		= false;
var	dgnBrowseCur	= 0;
var dgnBrowsePre	= 0;
var occBrowse		= false;
var occBrowseCur	= 0;
var occBrowsePre	= 0;
var occRelated		= false;
var dgnRelated		= false;

window.addEvent('domready', function() {
	
	//Load Default
	toggleSubRow();

	//Group realted occupations 
	if($('relatedOccList')) groupRelatedOcc();
	
	//dgnBrowse
	if($('dgnBrowse'))	loadDiagnosisBrowse();
	if($('occBrowse'))	loadOccupationBrowse();
	
	
	
});

function toggleSubRow(){
	
	if($defined($('Results'))){
		var tree = $('Results').getElements('div[class^=row]');
		tree.each(function(row){			   
			if(row.id && !isNaN(row.id.substr(3))){
				var id = row.id.substr(3);
				if($defined($('sub' + id))){
					var subrow 	= $('sub' + id);
					var toggle	= false;
					subrow.setStyle('display','block');
					subrow.fx 	= new Fx.Slide('sub' + id, {link: 'ignore', onComplete: function(){	if(this.wrapper.offsetHeight != 0) this.wrapper.setStyle('height', 'auto');	} });
					subrow.fx.hide();
					
					row.getElement('div[class^=toggle]').addEvent('click', function(e){
						toggle 	= this;
						toggle.toggleClass('toggleon');	
						subrow.fx.toggle();
					});
					
					row.getElement('a').addEvent('click', function(e){
						if(toggle) toggle.toggleClass('toggleon');	
						subrow.fx.toggle();
					});
					
				}
			}
		});
		
	}
	
}

function groupRelatedOcc(){
	var container 	= $('relatedOccList');
	var list 		= container.getElements('span[title=code]');
	var length, code, short, parent;
	for(var i = 0; i < list.length; ++i){
		if(list[i].innerHTML.length > 1){
			code 	= list[i].innerHTML;
			length	= code.length;
			short	= code.substring(0,length - 1);
			shorter	= length > 2 ? code.substring(0,length - 2) : false;
			shortest= length > 3 ? code.substring(0,length - 2) : false;

			if(container.getElement('span[id="'+short+'"]') != null){
				var destination = container.getElement('span[id="'+short+'"]').getParent('div').getElement('div.subtree');		
				destination.appendChild(container.getElement('span[id="'+code+'"]').getParent('div'));
			
			}else if(shorter && container.getElement('span[id="'+shorter+'"]') != null){
				var destination = container.getElement('span[id="'+shorter+'"]').getParent('div').getElement('div.subtree');		
				destination.appendChild(container.getElement('span[id="'+code+'"]').getParent('div'));
			}
			
		}
	}
}

function refExport(){
	var form 		= $('formExport');
	var checkbox	= $('formExport').getElements('input[type=checkbox]');
	var checked		= false;
	
	for(var i = 0; i < checkbox.length; ++i)
		if(checkbox[i].checked){ checked = true; break; }
	
	if(!checked) 	alert('Please select one or more references.');
	else			form.submit();
	
}

function showBrowse(btn,div,defaultTop){	
	//left : btn left - div width + btn width
	//var left = $(btn).offsetLeft - (480 - 73); //doesn't work in IE
	var left 	= $(btn).getPosition().x - (480 - 73); //browser proof
	//$(div).style.top = $(btn).offsetTop + 25 + 'px';
	
	if(document.all && defaultTop)
		var top		= defaultTop;
	else
		var top		= $(btn).getPosition().y;
	
	top			+= 25;
	$(div).style.top = top + 'px'; //browser proof
	$(div).style.left = left + 'px';
	$(div).style.display = 'block';
	
}

function loadDiagnosisBrowse(){
	var url			= 'http/site.http.php';
	var reqStr		= "request=loadDiagnosisBrowse";
	new Request({
		url: url,
		link:'cancel',
		onSuccess: function(response) {
			//global var
			dgnBrowse = JSON.decode(response);
			updateDiagnosisBrowse(0);
		}
	}).send(reqStr);
}

function dgnBrowseBack(){
	updateDiagnosisBrowse(dgnBrowse[dgnBrowseCur][0].owner);	
}

var divLine 	= new Element('div',{'class':'line'});
var divLeft 	= new Element('div',{'class':'left'});
var divLeftSpan = new Element('div',{'class':'left span'});

function updateDiagnosisBrowse(id){
	if(dgnBrowse && dgnBrowse[id]){
		dgnBrowseCur = id;
		//alert('current: ' + dgnBrowseCur);
		//Update lines
		$('dgnBrowseLines').empty('');
		for(i = 0; i < dgnBrowse[id].length; i++){
			if(dgnBrowse[dgnBrowse[id][i].id] && dgnBrowse[dgnBrowse[id][i].id].length > 0){
				var control	= new Element('div',{'class':'control'});
				control.adopt(new Element('a',{'href':'javascript:updateDiagnosisBrowse('+ dgnBrowse[id][i].id +');'}).adopt( new Element('div',{'class':'down'} ) ) );
				
				var name	= new Element('a',{'href':'javascript:updateDiagnosisBrowse('+ dgnBrowse[id][i].id +');'}).set('html',dgnBrowse[id][i].name);
			}else{
				var control	= new Element('div',{'class':'control'});
				control.adopt(new Element('div',{'class':'select','title':'Select'}).addEvent('click', setDiagnosisBrowse.bind(this,dgnBrowse[id][i].name)) );
				//var name	= new Element('span').set('html','<strong>' + dgnBrowse[id][i].name + '</strong>');
				var name	= new Element('a',{'href':'javascript:void(0);'}).addEvent('click', setDiagnosisBrowse.bind(this,dgnBrowse[id][i].name)).set('html',dgnBrowse[id][i].name);
			}
			var line 	= divLine.clone().adopt(divLeft.clone().adopt(control), divLeftSpan.clone().adopt(name));
			$('dgnBrowseLines').adopt(line);
		}
		
	}
}

function setDiagnosisBrowse(name){
	$('srcDiagnosis').value = name;
	hideBrowse('dgnBrowse');
}

function hideBrowse(div){
	$(div).style.display = 'none';
}

/////////////////////////////
/// Occupation //////////////
/////////////////////////////
function loadOccupationBrowse(){
	var url			= 'http/site.http.php';
	var reqStr		= "request=loadOccupationBrowse";
	new Request({
		url: url,
		link:'cancel',
		onSuccess: function(response) {
			//global var
			occBrowse = JSON.decode(response);
			updateOccupationBrowse(0);
		}
	}).send(reqStr);
}

function updateOccupationBrowse(id){
	if(occBrowse && occBrowse[id]){
		occBrowseCur = id;
		//Update lines
		$('occBrowseLines').empty('');
		for(i = 0; i < occBrowse[id].length; i++){
			var control	= new Element('div',{'class':'control'});
			
			control.adopt(new Element('div',{'class':'select','title':'Select'}).addEvent('click', setOccupationBrowse.bind(this,occBrowse[id][i].name)) );
			if(occBrowse[occBrowse[id][i].id] && occBrowse[occBrowse[id][i].id].length > 0)
			{
				control.adopt(new Element('a',{'href':'javascript:updateOccupationBrowse('+ occBrowse[id][i].id +');'}).adopt( new Element('div',{'class':'down'} ) ) );
				var a		= new Element('a',{'href':'javascript:updateOccupationBrowse('+ occBrowse[id][i].id +');'}).set('html',occBrowse[id][i].code + '. ' + occBrowse[id][i].name);
			}
			else
			{
				var a		= new Element('a',{'href':'javascript:void(0);'}).set('html',occBrowse[id][i].code + '. ' + occBrowse[id][i].name).addEvent('click', setOccupationBrowse.bind(this,occBrowse[id][i].name));
			}
			
			var name	= new Element('span').adopt(a);
				
			var line 	= divLine.clone().adopt(divLeft.clone().adopt(control), divLeftSpan.clone().adopt(name));
			$('occBrowseLines').adopt(line);
		}
		
	}
}

function occBrowseBack(){
	updateOccupationBrowse(occBrowse[occBrowseCur][0].owner);	
}

function setOccupationBrowse(name){
	$('srcOccupation').value = name;
	hideBrowse('occBrowse');
}
