var forwardStr = "vorwärts";
var backwardStr = "rückwärts";
var vesselUrl = /*VIPURL*/"/WWW/EN/E-Business/Sailing_Schedules/By_Service/Details/VesselDetails.jsp";
var portUrl = /*VIPURL*/"/WWW/EN/E-Business/Sailing_Schedules/By_Service/Details/PortsDetails.jsp";
var backUrl = "";
var vesselString = "Schiff";
var voyageNoString = "Reise";

function setVesselUrl(url){
	vesselUrl = url;
}

function setBackUrl(url){
	backUrl = url;
}

function setPortUrl(url){
	portUrl = url;
}

function setForwardString(msg){
	forwardStr = msg;
}

function setBackwardString(msg){
	backwardStr = msg;
}

function setVesselString(msg){
	vesselString = msg;
}

function getVesselString(){
	return vesselString;
}

function setVoyageNoString(msg){
	voyageNoString = msg;
}

function getVoyageNoString(){
	return voyageNoString;
}

function getColor(index){
	color = color1;
	if(index%2==1){
		color = color2;
	}
	return color;
}

// returns the width according to the number of max. connectiosn to display.
function getWidth(){
	return Math.round(400/maxDisplay);
}

function showButtons(direction){
	if(direction==1){
		if(offSet+maxDisplay < Legs[0][0].length){
			change_layer("forwardU", "<a href=\"javascript:scroll(1)\">"+forwardStr+"</a>");
			change_layer("forwardO", "<a href=\"javascript:scroll(1)\">"+forwardStr+"</a>");
			change_layer("backwardU", "<a href=\"javascript:scroll(-1)\">"+backwardStr+"</a>");
			change_layer("backwardO", "<a href=\"javascript:scroll(-1)\">"+backwardStr+"</a>");
		}
		else{
			change_layer("forwardU", "<b style=\"font-family: Arial, Helvetica, sans-serif;font-size:12px;color:#666666;font-weight:normal\">"+forwardStr+"</b>");
			change_layer("forwardO", "<b style=\"font-family: Arial, Helvetica, sans-serif;font-size:12px;color:#666666;font-weight:normal\">"+forwardStr+"</b>");
			change_layer("backwardU", "<a href=\"javascript:scroll(-1)\">"+backwardStr+"</a>");
			change_layer("backwardO", "<a href=\"javascript:scroll(-1)\">"+backwardStr+"</a>");
		}
	}
	if(direction==-1){
		if(offSet>0){
			change_layer("forwardU", "<a href=\"javascript:scroll(1)\">"+forwardStr+"</a>");
			change_layer("forwardO", "<a href=\"javascript:scroll(1)\">"+forwardStr+"</a>");
			change_layer("backwardU", "<a href=\"javascript:scroll(-1)\">"+backwardStr+"</a>");
			change_layer("backwardO", "<a href=\"javascript:scroll(-1)\">"+backwardStr+"</a>");
		}
		else{
			change_layer("backwardU", "<b style=\"font-family: Arial, Helvetica, sans-serif;font-size:12px;color:#666666;font-weight:normal\">"+backwardStr+"</b>");
			change_layer("backwardO", "<b style=\"font-family: Arial, Helvetica, sans-serif;font-size:12px;color:#666666;font-weight:normal\">"+backwardStr+"</b>");
			change_layer("forwardU", "<a href=\"javascript:scroll(1)\">"+forwardStr+"</a>");
			change_layer("forwardO", "<a href=\"javascript:scroll(1)\">"+forwardStr+"</a>");
		}
	}
}

// implements the scroll functionality, direction = -1 means: go back in result; direction = 1 means: go forward in result
function scroll(direction){
	if(direction==1){
		if(offSet+maxDisplay < Legs[0][0].length){
			offSet = offSet + maxDisplay;
		}
	}
	if(direction==-1){
		if(offSet>0){
			offSet = offSet - maxDisplay;
		}
	}
	showButtons(direction);
	change_layer("result", writeNew());
}                        

// this function writes the value in the layer specified by the name
function change_layer(layer, value){
	IE=0;
	NS4=0;
	NS6=0;
         OPERA=0;
	if (navigator.appName.indexOf('Netscape')!=-1 && parseInt(navigator.appVersion)<5) {NS4=1;}
	if (navigator.appName.indexOf('Netscape')!=-1 && parseInt(navigator.appVersion)>4.9) {NS6=1;}
	if (navigator.appName.indexOf('Microsoft')!=-1 && parseInt(navigator.appVersion)>3) {IE=1;}
         if (navigator.appName.indexOf('Opera')!=-1 && parseInt(navigator.appVersion)>8) { OPERA=1;}
	if (IE==true){
   		document.all['IE_'+layer].innerHTML=value;
	}
   	if (NS4){
    		eval('var echoecho = document.layers.NS_'+layer+'.document;');
	    	echoecho.open();
		echoecho.write(value);
	    	echoecho.close();
	}
	if (NS6){
    		document.getElementById('NS_'+layer).innerHTML =value;
   	}
         if (OPERA==true){
            	document.getElementById('NS_'+layer).innerHTML = value;
	}
}

// this function returns the html tag for writing a certain td with align, valign, width, bold indicator and text
function writeCell(text, color, align, valign, bold, width, cssType, linkUrl, alternate){
	var content = "";
	if(text!=null)
	{
		if(bold)
		{
			content += "<td align=\""+align+"\" valign=\""+valign+"\" bgcolor=\""+color+"\" width=\""+width+"\"";
			if(cssType!=null) content+="id=\""+cssType+"\"";
			if(linkUrl!=null){
				content+="><a href=\"#\" onclick=\"javascript:openDetails('"+linkUrl+"', 'details', 385, 500);\"><b>"+text+"</b></a>";
				if(alternate) content+="<sup>1</sup>";
				content += "</td>";
			}
			else{
				content+="><b>";
				content+=text
				if(alternate) content+="<sup>1</sup>";
				content+="</b></td>";
			}
		}
		else{
			content += "<td align=\""+align+"\" valign=\""+valign+"\" bgcolor=\""+color+"\" width=\""+width+"\"";
			if(cssType!=null) content+="id=\""+cssType+"\"";
			if(linkUrl!=null){
				content+="><a href=\"#\" onclick=\"javascript:openDetails('"+linkUrl+"', 'details', 385, 500);\">"+text+"</a>";
				if(alternate) content+="<sup>1</sup>";
				content+"</td>";
			}
			else{
				content+=">";
				content+=text;
				if(alternate) content+="<sup>1</sup>";
				content+="</td>";
			}
		}
	}
	else{
		content += "<td align=\""+align+"\" valign=\""+valign+"\" bgcolor=\""+color+"\" width=\""+width+"\"";
		if(cssType!=null) content+="id=\""+cssType+"\"";
		content+=">&nbsp;</td>";
	}
	return content;
}

// this function returns the html code for the complete result table according to the actual offSet.
function writeNew(){
	var content = "<table width=\"505\" cellspacing=\"0\" cellpadding=\"0\" bgcolor=\"#1e2f59\" border=\"0\"><tr>";
	for (var index = 0; index < Legs.length; index++){
		var leg = Legs[index];
		var Ships = leg[0];
		var ShipNos = leg[1];
		var Voy = leg[2];
		var Ports = leg[3];
		var Times = leg[4];
		var Directions = leg[5];
		var Alternates = leg[6];
		if(index==0) content += writeCell(vesselString, color2, "left", "top", true, 100, "borderTOP2PX", null, false);
		else content += writeCell(vesselString, color2, "left", "top", true, 100, "borderTOP", null);
		for(var j = offSet; j < offSet+maxDisplay; j++){
			var url = vesselUrl;
			if(index==0)
			{
				if(ShipNos[j]!=null) url+="?vessel="+ShipNos[j]+"&backUrl="+backUrl;
				content += writeCell(Ships[j], getColor(j), "center", "top", true, 100, "borderTOP2PX", url, false);
			}
			else
			{
				if(ShipNos[j]!=null) url+="?vessel="+ShipNos[j]+"&backUrl="+backUrl;;
				content += writeCell(Ships[j], getColor(j), "center", "top", true, 100, "borderTOP", url, false);
			}
		}
		content += "</tr>";
		content += writeCell(voyageNoString, color2, "left", "top", true, 100, "borderBOTTOM", null, false);
		for(var k = offSet; k < offSet+maxDisplay; k++){
			if(Voy[k]!=null && Directions[k]!=null){
				content += writeCell(Voy[k]+Directions[k] , getColor(k), "center", "top", true, 100, "borderBOTTOM", null, false);
			}
			else{
				content += writeCell("&nbsp;" , getColor(k), "center", "top", true, 100, "borderBOTTOM", null, false);
			}
		}
		content += "</tr>";
		for(var l = 0; l < Times.length; l++){
			var time = Times[l];
			content += "<tr>";
			var alt = Alternates[l];
			var cssTypAddon = "";
			if(l== Times.length-1 && index==Legs.length-1) cssTypAddon="2PX";
			content += writeCell(Ports[l], color2, "left", "top", true, 100, "borderBOTTOMLEFTALIGN"+cssTypAddon, null, Alternates[l]);
			for(var m = offSet; m < offSet+maxDisplay; m++){
				content += writeCell(time[m], getColor(m), "center", "top", false, 100, "borderBOTTOM"+cssTypAddon, null, false);
			}
			content += "</tr>";
		}
	}
	content += "</table>";
	return content;
}

function openDetails(href){
	window.location = href;
}

function openPrint(href){
	window.location = href;
}