function displayferries(sortby) {
    if (!sortby) {
        sortby = "price";
    }
    if (document.getElementById("ferryresults")) {
        var ferryresults = "";
        var n;
        for (n = 0; n < ferrylist[sortby].length; n++) {
            if (document.getElementById("ferry" + ferrylist[sortby][n])) {
                ferryresults += document.getElementById("ferry" + ferrylist[sortby][n]).innerHTML;
            }
        }
        document.getElementById("ferryresults").innerHTML = ferryresults;
    }
    if (document.getElementById("altferryresults")) {
        var altferryresults = "";
        var n;
        for (n = 0; n < altferrylist[sortby].length; n++) {
            if (document.getElementById("ferry" + altferrylist[sortby][n])) {
                altferryresults += document.getElementById("ferry" + altferrylist[sortby][n]).innerHTML;
            }
        }
        document.getElementById("altferryresults").innerHTML = altferryresults;
    }
}


function changeferriesort(sortby) {
    if (!sortby) {
        sortby = "price";
    }
    if (document.getElementById("ferriesortlist")) {
        var ferriesort = "";
        if (sortby == "price") {
            ferriesort += document.getElementById("sortpricehigh").innerHTML;
        } else {
            ferriesort += document.getElementById("sortprice").innerHTML;
        }
        if (sortby == "stops") {
            ferriesort += document.getElementById("sortstopshigh").innerHTML;
        } else {
            ferriesort += document.getElementById("sortstops").innerHTML;
        }
        if (sortby == "journeytime") {
            ferriesort += document.getElementById("sortjourneytimehigh").innerHTML;
        } else {
            ferriesort += document.getElementById("sortjourneytime").innerHTML;
        }
        displayferries(sortby);
        document.getElementById("ferriesortlist").innerHTML = ferriesort;
    }
}

function dpinitferry(setdepport,destport) {

	var box = document.getElementById("noinitlists");
	if (box) {
		return;
	}

	if (document.getElementById("depport")) {
		dpfilldepport();
		dpfilldestport(setdepport || document.getElementById("depport").value);
		port = destport || document.getElementById("destport").value;
		dpfillcountry(ferrycountrylist[port],port);
		dpfillcountry('',destport || document.getElementById("destport").value);
	}
}

// when the departure port dropdown is changed
function dpchangedepport(depport) {
	
	// fill dests ports for a given departure port
	dpfilldestport(depport || document.getElementById("depport").value);

	// change country dropdown
	port =  document.getElementById("destport").value;
	dpfillcountry(ferrycountrylist[port],port);
	dpchangecountry();


}

// when the destination port dropdown is changed
function dpchangedestport(destport) {
	port = destport || document.getElementById("destport").value;
	dpfillcountry(ferrycountrylist[port],port);
	dpchangecountry();
}


function dpfilldepport() {

	var box = document.getElementById("depport");
	if (box) {
		if (!box.options) {
			return;
		}
	}
	var was = emptyList(box, 0);
	for (var i = 0; i < ferrydepartures.length; i++) {
		var res = ferrydepartures[i].split(":");

		if (res[1]) {
			option = new Option( res[1], res[0] );
		} else {
			option = new Option( res[0], res[0] );
		}
		box.options[box.length] = option;
	}

	//setfield("depport", was);

}

function dpfilldestport(depportsel) {

	var box = document.getElementById("destport");
	if (box) {
		if (!box.options) {
			return;
		}
	}

	var was = emptyList(box, 0);
	if (!inlist(depportsel, "ferrydestlist")) {
		depportsel = document.getElementById("depport").value || document.getElementById("depport").options[0].value;
	}

	for (var i = 0; i < ferrydestlist[depportsel].length; i++) {
		var res = ferrydestlist[depportsel][i].split(":");

		if (res[1]) {
			option = new Option( res[1], res[0] );
		} else {
			option = new Option( res[0], res[0] );
		}
		box.options[box.length] = option;
	}

	setfield("destport", was);

}
