//
// The next variable is used to enable/disable javascript debug messages
// 
var debugIsEnabled = true;

function mudaimagem(objecto, imagem) {
	document.getElementById(objecto).src = imagem;
}

function isHidden(id) {
	var elem = document.getElementById(id);
	if(elem) {
		return (elem.style.display == 'none');
	} else if(debugIsEnabled) {
		alert("[isHidden] Couldn't get element with id '" + id + "'. Check file 'funcoes.js'");
	}
	
	return false;
}



function hide(id) {
	var elem = document.getElementById(id);
	elem.style.display = 'none';

}

function collapse_expand(idTable,idArrow,srcExpandedArrow,srcCollapsedArrow) {	
	if(!document.getElementById)
		return;
	var table = document.getElementById( idTable );
	var arrow = document.getElementById( idArrow );
	var currentDisplay = table.style.display;
	if (currentDisplay == '')
	{
		var newDisplay = 'none';
		arrow.src = srcCollapsedArrow;
	}
	else
	{
		var newDisplay = '';
		arrow.src = srcExpandedArrow;
	}
	table.style.display = newDisplay;
}

function collapse_expand_array(idTable,idTables, idArrows,srcExpandedArrow,srcCollapsedArrow) {	
	if(!document.getElementById)
		return;
	for(i = 0; i < idTables.length; i++) {
		var table = document.getElementById( idTables[i] );
		var arrow = document.getElementById( idArrows[i] );
		var currentDisplay = table.style.display;
		if (currentDisplay == '')
		{
			var newDisplay = 'none';
			arrow.src = srcCollapsedArrow;
			table.style.display = newDisplay;
		}
		else if(currentDisplay != '' && idTables[i] == idTable)
		{
			var newDisplay = '';
			arrow.src = srcExpandedArrow;
			table.style.display = newDisplay;
		}
	}
}

function collapse_expand_count(idTable,prefixTable,prefixArrow,count,srcExpandedArrow,srcCollapsedArrow) {	
	if(!document.getElementById)
		return;
	for(i = 1; i <= count; i++) {
		var table = document.getElementById( prefixTable + i );
		var arrow = document.getElementById( prefixArrow + i );
		var currentDisplay = table.style.display;
		if (currentDisplay == '')
		{
			var newDisplay = 'none';
			arrow.src = srcCollapsedArrow;
			table.style.display = newDisplay;
		}
		else if(currentDisplay != '' && prefixTable + i == idTable)
		{
			var newDisplay = '';
			arrow.src = srcExpandedArrow;
			table.style.display = newDisplay;
		}
	}
}
function coll_exp(idTable,prefixTable,prefixArrow,srcExpandedArrow,srcCollapsedArrow,start) {	
	for(i=start;;i++) {
		var table=getObject(prefixTable+i);
		if(table==null)if(i>0)break;else continue;
		var arrow=getObject(prefixArrow+i);
		var currentDisplay=table.style.display;
		if (currentDisplay == ''){
			arrow.src = srcCollapsedArrow;
			table.style.display = 'none';
		}else if(currentDisplay!='' && prefixTable+i==idTable){
			arrow.src = srcExpandedArrow;
			table.style.display = '';
		}
	}
}

function limitText(elemId, limitNum) {
	var elem=document.getElementById(elemId);
	if (elem.value.length > limitNum) {
		elem.value = elem.value.substring(0, limitNum);
	}
}

//
// Date functions
//

function today() {
	var time = new Date(); 
	var year = time.getYear();
    if(year < 2000) {year += 1900;}  
  	var month = time.getMonth()+1;
  	var day = time.getDate();
  	if(month < 10) {month = "0" + month;}
  	if(day < 10) {day = "0" + day;}
  
	return year + "-" + month + "-" + day;
}

function compareSimpleDates(d1,m1,y1,d2,m2,y2) {
	if (y1 > y2) return 1;
	else if (y1 < y2) return -1;
	else if (m1 > m2) return 1;
	else if (m1 < m2) return -1;
	else if (d1 > d2) return 1;
	else if (d1 < d2) return -1;
	else return 0;
}

function isValidateDate(day, month, year) {
	
	if((month < 1) || (month > 12)) {return false;}
	if((day < 1) || (day > 31)) {return false;}
	if(day == 31) {
		if( (month==2) || (month==4) || (month==6) || (month==9) || (month==11) ) {
			return false;
		}
	}
	
	if(year < 2005) {return false;}
	
	if(month == 2) {
		if(day > 29) { return false; }
		
		if(day > 28) {
			var bisixth = false;
			for(var y=2000; y<2200; y+=4) {
				if(year == y) {
					bisixth = true;
					break;
				}
			}
			if(!bisixth) { return false; }
		}
	}
	
	return true;
}

function dateIsValid(date) {

	var args = date.split("-");

	if(args == null) {
		return false;
	}
	
	if(args.length != 3) {
		return false;
	}
	
	return isValidateDate(args[2], args[1], args[0]);
}



function compareFullDates(after, before) {
	
	if(!dateIsValid(after) || !dateIsValid(before)) {
		return 0;
	}
	
	var a = after.split("-");
	var b = before.split("-");
	
	var d1=a[2];
	var m1=a[1];
	var y1=a[0];
	var d2=b[2];
	var m2=b[1];
	var y2=b[0];
	
	var id1 = parseInt(d1,10);
	var im1 = parseInt(m1,10);
	var iy1 = parseInt(y1,10);
	var id2 = parseInt(d2,10);
	var im2 = parseInt(m2,10);
	var iy2 = parseInt(y2,10);
	
	var result = compareSimpleDates(id1,im1,iy1,id2,im2,iy2);
	return result;
}

function showHide2(id,act){
var e=getObject(id+act);if(e){if(e.style.display=='none'){e.style.display='';}else{e.style.display='none';}
for(var i=0;;i++){if(i!=act){var o=getObject(id+i);if(o){if(o.style.display!='none'){o.style.display='none';}}else{break;}}}}
}

function showHide(id) {
	var elem = document.getElementById(id);
	if(elem) {
		if(elem.style.display == 'none') {
			elem.style.display = '';
		} else {
			elem.style.display = 'none';
		}
	} else if(debugIsEnabled) {
		alert("[showHide] Couldn't get element with id '" + id + "'. Check file 'funcoes.js'");
	}
}

function changeClasses(object, expandedClass, collapsedClass) {
	if (object.className == expandedClass+'-h') {
		object.className = collapsedClass+'-h';
	} else {
		if (object.className == collapsedClass+'-h') {
			object.className = expandedClass+'-h';
		}
	}
	if (object.className == expandedClass) {
		object.className = collapsedClass;
	} else {
		if (object.className == collapsedClass) {
			object.className = expandedClass;
		}
	}
}

function determineClasses(object, expandedClass, collapsedClass) {
	if (object.className == expandedClass) {
		object.className = expandedClass;
	}
	if (object.className == expandedClass+'-h') {
		object.className = expandedClass;
	}
	if (object.className == collapsedClass) {
		object.className = collapsedClass;
	}
	if (object.className == collapsedClass+'-h') {
		object.className = collapsedClass;
	} 
}

function determineClassesHover(object, expandedClass, collapsedClass) {
	if ((object.className == expandedClass) || (object.className == expandedClass+'-h')) {
		object.className = expandedClass+'-h';
	}
	if ((object.className == collapsedClass) || (object.className == collapsedClass+'-h')) {
		object.className = collapsedClass+'-h';
	}
}

function changeLanguage(lang) {

	var oldUrl = document.URL; 
	var url = oldUrl.split("?");
	var query = url[1];
	
	if(query == null) {
		query = "lang=" + lang;
	}
	
	var vars = query.split("&");
	var isChanged = false;
	
	var newQuery = "";
	var newUrl = url[0] + "?";
	var anchor;
	
	for (var i=0;i<vars.length;i++) {
		var pair = vars[i].split("=");
		if (pair[0] == "lang") {
			pair[1] = lang;
			isChanged = true;
    	}
    	var val = pair[1].split("#");
    	if(val[1]!=null){anchor=val[1];pair[1]=val[0];}

    	newQuery += "&" + pair[0] + "=" + pair[1];
  	} 
	if(!isChanged){newQuery += "&lang=" + lang;}
	if(anchor){newQuery += "#"+anchor;}
	newQuery = newQuery.substring(1);
	window.location = newUrl + newQuery;
}

function validateDates(maxDays) {
var span=getObject('daySpan');
var i=0;
var err=new Array();
var focusField='';
var exist = false;
for (i=0;i<=maxDays;i++) {
	var day=getObject('d'+ i);
	var month=getObject('m'+ i);
	var year=getObject('y'+ i);
	if(day.value != "" && day.value != 'DD'){
		if(month.value != "" && month.value != 'MM') {
			if(year.value != "" && year.value != 'YYYY') {
				var time = new Date();
				var ayear = time.getYear();
			    if(ayear < 2000) {ayear += 1900;}  
  				var amonth = time.getMonth()+1;
			  	var aday = time.getDate();
				if(compareDates(aday + "-" +  amonth + "-" +  ayear,"d-M-yyyy",day.value + "-" + month.value + "-" + year.value,"d-M-yyyy") != 0) {
					err[err.length]='day';
					showErrorsClient(err);
					focusField=day;
					try{focusField.focus();}catch(Ex){}
					return false;
				} else
					exist = true;
		}else {
			err[err.length]='day';
			showErrorsClient(err);
			focusField=year;
			try{focusField.focus();}catch(Ex){}
			return false;
		}
	}else {
			err[err.length]='day';
			showErrorsClient(err);
			focusField=month;
			try{focusField.focus();}catch(Ex){}
			return false;
	}		
} else {
	if((month.value != "" && month.value != 'MM') || (year.value != "" && year.value != 'YYYY')) {
		err[err.length]='day';
		showErrorsClient(err);
		focusField=day;
		try{focusField.focus();}catch(Ex){}
		return false;
	}
}
}
if(!exist){
		err[err.length]='day';
		showErrorsClient(err);
		var day=getObject('d0');
		focusField=day;
		try{focusField.focus();}catch(Ex){}
		return false;
}

return true;
}

function floatsonly(myfield, e, dec)
{
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) ||
    (key==9) || (key==13) || (key==27) )
   return true;

// numbers & decimal point jump
else if ((("0123456789.,").indexOf(keychar) > -1))
   return true;
else
   return false;
}

function numbersonly(myfield, e, dec)
{
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) ||
    (key==9) || (key==13) || (key==27) )
   return true;

// numbers & decimal point jump
else if ((("0123456789").indexOf(keychar) > -1))
   return true;
else
   return false;
}

function openPopup(imageURL,caption){
var myScript="<html><head><title>"+caption+"</title><script language=\"JavaScript\" type=\"text/javascript\">\nfunction resizewindow(){var width=document.bigimg.width;var height = document.bigimg.height;";
if(navigator.appName.indexOf("Netscape")!=-1){myScript=myScript+"window.innerHeight=height;window.innerWidth=width;";}
else if(navigator.appName.indexOf("Opera")!=-1){myScript=myScript+"window.resizeTo(width+12,height+31);";}
else if(navigator.appName.indexOf("Microsoft")!=-1){myScript=myScript+"window.resizeTo(width+12,height+31);";}
else{myScript=myScript+"window.resizeTo (width+14, height+34);";}
myScript=myScript+"}window.onload=resizewindow;</script>\n</head><body onblur=\"self.close()\" style=\"margin: 0px; padding: 0px;\"><img src=\""+imageURL+"\" alt=\""+caption+"\" title=\""+caption+"\" name=\"bigimg\"></body></html>"; 
var imageWindow=window.open("","imageWin","width=730,height=532,top=100,left=100,resizable");
imageWindow.document.write(myScript)
imageWindow.document.close();
if(window.focus)imageWindow.focus();}
function poPup(url){var nw=window.open(url);if(window.focus){nw.focus()}}

function showError(field) {
	var span = document.getElementById(field+'Span');
	if(span){span.style.color='red';span.style.fontWeight='bold';}
}

function validateName() {
	var name = document.getElementById('contactWorkerName').value;
	var err=new Array();
	if(name != null) {
	var nameSlipt = name.split(" ");
	if(nameSlipt.length < 2) {
		err[err.length]='contactWorkerName';
		showErrorsClient(err);
		return false;
	}
	for(var i=0;i<nameSlipt.length;i++){
	if(nameSlipt[i].length < 2) {
		err[err.length]='contactWorkerName';
		showErrorsClient(err);
		return false;
		}
	}
	}
	return true;
}

function validatePeopleNumber(){
	var adults = parseInt(document.getElementById('adultsNumber').value);
	var kids = parseInt(document.getElementById('kidsNumber').value);
	
	var err=new Array();
	
	if(adults + kids < 10) {
		err[err.length]='group';
		showErrorsClient(err);
		return false;
	}
	return true;
}

function validateLongDistanceJourneyGroup(){
	var adults = parseInt(document.getElementById('adultsNumber').value);
	var seniors = parseInt(document.getElementById('seniorsNumber').value);
	var kids = parseInt(document.getElementById('kidsNumber').value);
	
	var err=new Array();
	if(adults + seniors + kids < 10) {
		err[err.length]='group';
		showErrorsClient(err);
		return false;
	}
	return true;
}

function validateOportoJourneyGroup(){
	var adults = parseInt(document.getElementById('adultsNumber').value);
	var seniors = parseInt(document.getElementById('seniorsNumber').value);
	var kids = parseInt(document.getElementById('kidsNumber').value);
	var babies = parseInt(document.getElementById('babiesNumber').value);
	
	var err=new Array();
	if(adults + seniors + kids + babies < 10) {
		err[err.length]='group';
		showErrorsClient(err);
		return false;
	}
	return true;
}

function validateStations(){
	var depart = getObject("depart");
	var arrival = getObject("arrival");
	
	if(depart.value != '' || arrival.value != ''){
		var err=new Array();
		if(trim(arrival.value)==trim(depart.value)) {
			err[err.length]='depart';
			err[err.length]='arrival';
		}
	
		var ttLs=getObject('StationsTimetableList');
		if(ttLs.length>1){
		var error=true;
		for(var i=0;i<ttLs.length;i++){
			if(trim(depart.value.toLowerCase())==trim(ttLs[i].text.toLowerCase())){
			depart.value=ttLs[i].text;
			error=false;
			break;
			}
		}
		if(error){
			err[err.length]='depart';
		}
		error=true;
		for(var i=0;i<ttLs.length;i++){
			if(trim(arrival.value.toLowerCase())==trim(ttLs[i].text.toLowerCase())){
				arrival.value=ttLs[i].text;
				error=false;
			}
		}
		if(error){
			err[err.length]='arrival';
		}
		}
	
		if(err.length>0) {
			showErrorsClient(err);
			return false;
		}
	}	
	return true;
}

function validateTripDates() {
	var departureDate = getObject('date').value;
	var arrivalDate = getObject('rdate').value;
	var departureHour = parseInt(getObject('dHour').value);
	var arrivalHour = parseInt(getObject('rHour').value);
	
	var err=new Array();
	
	if(departureDate.length != 0 && !dateIsValid(departureDate) ) {
		err[err.length]='date';
	}
	
	if(departureDate.length == 0 && !isNaN(departureHour)) {
		err[err.length]='date';
	}
	
	if(arrivalDate.length != 0 && !dateIsValid(arrivalDate) ) {
			err[err.length]='rdate';
	}
	
	if(arrivalDate.length == 0 && !isNaN(arrivalHour)) {
		err[err.length]='rdate';
	}
	
	if(err.length>0) {
		showErrorsClient(err);
		return false;
	}
	
	var res = compareFullDates(departureDate, arrivalDate);
	if(res>0){
		err[err.length]='date';
		err[err.length]='rdate';
	}
	if(!isNaN(departureHour) && !isNaN(arrivalHour) && res == 0 && arrivalHour<=departureHour) {
			err[err.length]='dHour';
			err[err.length]='rHour';
		
	}
	if(err.length>0) {
		showErrorsClient(err);
		return false;
	}
	return true;
}

function validateOnlyTripDates() {
	var departureDate = getObject('date').value;
	var arrivalDate = getObject('rdate').value;
	
	var err=new Array();
	
	if(departureDate.length != 0 && !dateIsValid(departureDate) ) {
		err[err.length]='date';
	}
	
	if(arrivalDate.length != 0 &&!dateIsValid(arrivalDate) ) {
			err[err.length]='rdate';
	}
	
	var res = compareFullDates(departureDate, arrivalDate);
	if(res>0){
		err[err.length]='date';
		err[err.length]='rdate';
	}

	if(err.length>0) {
		showErrorsClient(err);
		return false;
	}
	return true;
}

// Use in complaint form
function displayjca() {
	var table = document.getElementById('jca');
	table.style.display = '';
	var tablebt = document.getElementById('subbt');
	tablebt.style.display = ''; 
	var tablefsub = document.getElementById('fsub');
	tablefsub.style.display = 'none'; 
	
}


function disabledObj(id){
	document.getElementById(id).disabled="";
}

function enableObj(id){
	document.getElementById(id).disabled="disabled";
}
function clearField(id){
	var obj = getObject(id);
	
	if(obj.value != null || obj.valuelength != 0 ){
		obj.value='';
	}
}


