// chama a previous_task (i.e., volta atrás)
function go_back_(formulario) {
	var f = document.getElementById(formulario);
	f.task.value = f.previous_task.value + '_back';
	f.submit();
}

function do_cancel(formulario) {
	var f = document.getElementById(formulario);
	f.task.value = 'cancel';
	f.submit();
}

function retornar_opcao(controlo) {
	var opcao = -1;
	var num_elementos = controlo.length;
	if (num_elementos == undefined) {
		if (controlo.checked) opcao=1;
	}
	for (var i=0; i<=(controlo.length-1); i++)
		if (controlo[i].checked) opcao = i;
	return (opcao);
}

// round a number to a specific decimal length
function roundToLength(number,digits) {
	var result = Math.round(number*Math.pow(10,digits))/Math.pow(10,digits);
	return result;
}

// formats a float number to euro format
// global vars thousand_sep and decimal_sep must be defined previously according to localization
function numberToEuro(number) {
	number = roundToLength(number,2);
	var temp = number.toString();
	var parts = Array();
	parts = temp.split(".");
	var int_part = parts[0];
	var dec_part = '00';
	if (parts[1] != undefined)
		dec_part = parts[1];
	if (dec_part.toString().length < 2)
		dec_part = dec_part.toString() + '0';
	var i = int_part.length;
	var temp='';
	while (i>3) {
		temp = thousand_sep + int_part.substr(i-3,3) + temp;
		i-=3;
	}
	if (i>0) temp = int_part.substr(0,i) + temp;
	int_part = temp;
	return (int_part + decimal_sep + dec_part + '&nbsp;&euro;');
}

function validar_data(DataParaValidar) {
	if ((DataParaValidar.length<8) || (DataParaValidar.length>10)) return false;
	DataParaValidar = DataParaValidar.replace(new RegExp('/','g'),'-');
	var DataArray = DataParaValidar.split('-');
	if (DataArray.length!=3) return false;
	if (DataArray[2].length == 4) {
		var Ano = parseInt(DataArray[2],10);
		var Dia = parseInt(DataArray[0],10);
	} else if (DataArray[0].length == 4) {
		var Ano = parseInt(DataArray[0],10);
		var Dia = parseInt(DataArray[2],10);
	} else return false;
	var Mes = parseInt(DataArray[1],10);
	var Data = new Date(Ano, Mes-1, Dia);
	if ((Ano == Data.getFullYear()) && (Mes == (Data.getMonth()+1)) && (Dia == Data.getDate())) {
		Dia = (Dia<10)?('0'+Dia.toString()):Dia.toString();
		Mes = (Mes<10)?('0'+Mes.toString()):Mes.toString();
		DataParaValidar = Ano.toString() + '-' + Mes + '-' + Dia;
		return DataParaValidar;
	}
	return false;
}

function get_days_between(date1, date2) {
	var date_array1 = date1.split('-');
	var date_array2 = date2.split('-');
	var date1_year = parseInt(date_array1[0],10);
	var date1_month = parseInt(date_array1[1],10)-1;
	var date1_day = parseInt(date_array1[2],10);
	var date2_year = parseInt(date_array2[0],10);
	var date2_month = parseInt(date_array2[1],10)-1;
	var date2_day = parseInt(date_array2[2],10);
	var final_date1 = new Date(date1_year,date1_month,date1_day);
	var final_date2 = new Date(date2_year,date2_month,date2_day);
	var diff = parseInt((final_date2 - final_date1) / (1000*60*60*24),10);
	return diff;
}

function comparar_datas(Data1, Data2) {
	if (Data2 == 'hoje') {
		var Hoje = new Date();
		Data2 = Hoje.getFullYear().toString();
		var Mes = Hoje.getMonth()+1;
		Data2 += ((Mes<10)?'0':'') + Mes.toString();
		Data2 += ((Hoje.getDate()<10)?'0':'') + Hoje.getDate().toString();
	}
	Data1 = Data1.replace(/-/g,'');
	Data2 = Data2.replace(/-/g,'');
	if (Data1 > Data2) return 1;
	if (Data1 == Data2) return 0;
	if (Data1 < Data2) return -1;
}

function validate_cc_number(number) {
	var i,j,temp,temp2,char_temp,number_temp,sum_total;
	var first_number,second_number;
	
	// extrair os números
	temp='';
	for (i=0;i<number.length;i++) {
		char = number.charAt(i);
		if ((parseInt(char,10)>=0) && (parseInt(char,10)<=9)) temp+=char;
	}
	if (temp.length != 16) return false;
	first_number = parseInt(temp.charAt(0),10);
	// 4 - visa; 51 a 55 - mastercard
	if (first_number!=4 && first_number!=5) {
		return false;
	} else if (first_number==5) {
		second_number = parseInt(temp.charAt(1),10);
		if (second_number<1 && second_number>5) return false;
	}
	// calcula valor de controlo	
	j=0; sum_total=0;
	for (i=0;i<=15;i++) {
		number_temp = parseInt(temp.substr(i,1),10);
		if (j==0) {
			number_temp *= 2;
			if (number_temp>9) number_temp -= 9;
		}
		sum_total += number_temp;
		j=(j+1)%2;
	}
	// se o valor for múltiplo de 10, o nº é válido.
	if (sum_total!=0 && (sum_total%10)==0) return temp;
	return false;
}

// adds an onload event; does not overwrite existing onload events
function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}

// corrects a bug of joomla's calendar control
// 2008-04-22 Eurico Goncalves @ expedita.com
function showFixedCalendar(element_id, disabledHandlerFunc) {
	var el = document.getElementById(element_id);
	if (calendar != null) {
		calendar.hide();
	} else {
		var cal = new Calendar(true, null, selected, closeHandler);
		if (disabledHandlerFunc != undefined)
			cal.setDisabledHandler(disabledHandlerFunc);
		calendar = cal;
		cal.setRange(1900, 2070);
		calendar.create();
	}
	calendar.parseDate(el.value);
	calendar.sel = el;
	var el_pos = Calendar.getAbsolutePos(el);
	calendar.showAt(el_pos.x + el.offsetWidth, el_pos.y + el.offsetHeight);
	Calendar.addEvent(document, "mousedown", checkCalendar);
	return false;
}

// opens a new window with the contents of an element
// 2007-06-04 Eurico Goncalves @ expedita.com
function openWindowFromElement(element_id, title, css_file) {
	var element = document.getElementById(element_id);
	var contents = element.innerHTML;
	var header, footer;
	var new_window;
		
	header = '<html><head><title>' + title + '</title></head>';
	if (css_file != undefined)
		header += '<link rel="stylesheet" type="text/css" href="' + css_file + '" />';
	header += '<body>';
	footer = '</body></html>';

	new_window = window.open('',null,'');
	new_window.document.open("text/html", "replace");
	new_window.document.write(header);
	new_window.document.write(contents);
	new_window.document.write(footer);
	new_window.document.close();
	return new_window;
}

// shows a DatepickerUI Calendar
function showCalendar(target_el) {
	$(target_el).datepicker('show');
}
