var ie = (navigator.appName.indexOf("Explorer")!=-1);
var ns = (navigator.appName.indexOf("Netscape")!=-1);
var ns6 =(ns && navigator.userAgent.indexOf("Netscape6")!=-1);
var ns4 = ns && !ns6;
var cannotDisable = !(ie||ns6);
var MACIE=navigator.userAgent.indexOf("Mac")!=-1&&navigator.appName.indexOf("Explorer")!=-1;
var MACNS=navigator.userAgent.indexOf("Mac")!=-1&&navigator.appName.indexOf("Netscape")!=-1;
var _UNKNOWN_ = "_unknown_";

function blurNetscape(){
	this.blur();
}

function setEnabled(input, value){
	if(cannotDisable){
		input.xdisabled = !value;
	}
	input.disabled = !value;
}

function setEnabledArray(input, value){
	if(input.length==0)
		return false;
	for(i=0;i<input.length;i++)
		setEnabled(input[i],value);
}


function isDisabled(input){
	if(cannotDisable)
		return input.xdisabled;
	else
		return input.disabled;
}

function componentFocusGained(component){
	if(cannotDisable&&component.xdisabled)
		releaseFocus(component);
}

function componentFocusGainedSelect(component){
	if(cannotDisable&&component.xdisabled){
		for(i=0;i<component.length;i++)
			component[i].selected=false;
	}
}

function initTabIndex(form){
	if(ns&&!MACNS){
		var elements = form.elements;
		var lastNotHidden = elements.length-1;;
		while(elements[lastNotHidden].type=='hidden'&&lastNotHidden>0){
			lastNotHidden--;
		}

		for(var i=lastNotHidden-1;i>=0;i--){
			if(elements[i].type!='hidden'){
				elements[i].xnexttabindex = lastNotHidden;
				lastNotHidden=i;
			}
		}
	}
}

function releaseFocus(component){
	if(component.xnexttabindex)
		component.form.elements[component.xnexttabindex].focus();
	else
		component.blur();
}

function checkEnable(component){
	if(component.xdisabled){
		component.checked = !component.checked;
		if(component.xnexttabindex)
			component.form.elements[component.xnexttabindex].focus();
		else
			component.blur();
	}
}

function onlyNumbers(event) {
	var keyCode = (ns) ? event.which : event.keyCode; 
	if (ns)
		return;

	if (keyCode < 48 || keyCode > 57)
		event.returnValue = false;
}

function checkNumDocumento(input){
	if(ns&&input&&input.value){
		var oldValue = input.value;
		var idx = oldValue.indexOf("-");
		if(idx==-1)
			idx = oldValue.indexOf(" ");

		if(idx!=-1){
			while(idx!=-1){
				oldValue = oldValue.substring(0,idx)+oldValue.substring(idx+1);
				idx=oldValue.indexOf("-");
				if(idx==-1)
					idx = oldValue.indexOf(" ");
			}

			input.value = oldValue;
		}

		if(isNaN(input.value,10)){
			alert('This value: ('+input.value+') is not numeric');
			input.value='';
		}
	}	
}


//////////////////////////////////////////////////////
// Inicialização
function initSelect(form,name,value){
	var select = form.elements[name];
	if(select){
		if(select.length){
			for(i=0;i<select.length;i++){
				if(select[i].value==value){
					select.selectedIndex=i
					return;
				}
			}
		}
	}
}

function initCheck(form,name,value){
	var check = form.elements[name];
	if(check){
		if(value=='')
			check.checked=false;
		else
			check.checked=true;
	}
}

function initRadio(form,name,value){
	var radio = form.elements[name];
	if(radio){
		if(radio.length){
			for(i=0;i<radio.length;i++){
				if(radio[i].value==value){
					radio[i].checked=true;
					return;
				}
			}
		}
	}
}

function initInput(form,name,value){
	var input = form.elements[name];
	if(input)
		input.value=value;
}

//////////////////////////////////////////////////////


function sendFormToTest(htmlFileTest,withParams){
	var url = window.location.href.toLowerCase();
	var index = url.lastIndexOf('/')+1;
	var indexHTML = url.lastIndexOf('.html');
	var params = (withParams) ? window.location.href.substring(indexHTML) : '.html' ;
	window.location.href = window.location.href.slice(0,index) + htmlFileTest + params ;
}

function quickSearch(){
	sendFormToTest('quick_search',false);
}

function advancedSearch(){
	sendFormToTest('advanced_search',false);
}

function resultsTable(){
	sendFormToTest('results_table',true);
}

function viewFundCard(cardName){
	sendFormToTest('fund_'+cardName,true);
}


//////////////////////////////////////////////////////
//navegação
function getDirectory(){
	var url = window.location.href;
	var index =url.lastIndexOf('/')+1;
	return url.slice(0,index);
}


function cumulative(){
	window.location.href=getDirectory()+'results_table_cumulative.html';
}

function consistency(){
	window.location.href=getDirectory()+'results_table_consistency.html';
}

function ratios(){
	window.location.href=getDirectory()+'results_table_ratios.html';
}

//////////////////////////// Imprimir

function sendToPrint(){
	if (ie){
		ocultar();
		printThis();
		mostrar();
	}
	else {
		printThis();
	}
}

//////////////////////////////  Gestão dinamica de dados entre as combos
var initialList = null;
function saveInitialList(form,source){
	var fref_src = eval('document.forms["'+form.name+'"].'+source);
	initialList = new Array();
	for(i=0;i<fref_src.length;i++){
		var option = new Array();
		option[0] = fref_src.options[i].text;
		option[1] = fref_src.options[i].value;
		initialList[i] = option;
	}
}

function resetOptions(ref,action){
	if(ref!=null)
		if(ref.length>0){
			for(i=ref.length;i>0;i--){
				if(action){
					if(ref[i-1].selected)
						ref[i-1]=null;
				}
				else {
					ref[i-1]=null;
				}
			}
		}
}


function addAllFounds(form,source,target){
	var src = eval('document.forms["'+form.name+'"].'+source);
	var tgt = eval('document.forms["'+form.name+'"].'+target);

	if(src.length==0)
		return false;

	resetOptions(src);
	resetOptions(tgt);

	for(i=0;i<initialList.length;i++)
		tgt.options[i] = new Option(initialList[i][0],initialList[i][1]);
	return false;
}


function addFounds(form,source,target){
	var src = eval('document.forms["'+form.name+'"].'+source);
	var tgt = eval('document.forms["'+form.name+'"].'+target);

	if(src.length==0)
		return false;

	var countedBefore = src.length;
	resetOptions(src,true);
	if(src.length==countedBefore){
		alert('Não seleccionou nenhum fundo.');
		return false;
	}
	resetOptions(tgt,false);

	var insertedTgt = 0;
	var checkedSrc = 0;
	var insert = false;
	for(i=0;i<initialList.length;i++){
		if(checkedSrc<=src.length-1)
			insert = src.options[checkedSrc].value!=initialList[i][1];
		else
			insert = true;

		if(insert)
			tgt[insertedTgt++] = new Option(initialList[i][0],initialList[i][1]);
		else
			checkedSrc++;
	}
	return false;
}

function removeFounds(form,source,target){
	addFounds(form,target,source);
}

function removeAllFounds(form,source,target){
	addAllFounds(form,target,source);
}


///////////////////////  Reiniciar o formulário
function resetForm(){
	if(!confirm('Deseja reiniciar o formulário?'))
		return false;
	document.forms[0].reset();
	initDocument();
}


//////////////////// Seleccão de todas as checkBox agrupadas sobre os mesmo nome
function allCheckBox(form, name, action){
	var listCheckBox = eval('document.forms["'+form.name+'"].'+name);
	for(i=0;i<listCheckBox.length;i++)
		listCheckBox[i].checked = action;
}

function oneCheckBox(form, name, action){
	var listCheckBox = eval('document.forms["'+form.name+'"].'+name);
	if(!action)
		listCheckBox[0].checked = false;
}

function noneCheckBox(form, name, action){
	var listCheckBox = eval('document.forms["'+form.name+'"].'+name);
	for(i=1;i<listCheckBox.length;i++)
		listCheckBox[i].checked = false;
}

function imprimir(){
 if (document.all) print(this)
  else window.print()
}