
function debug(){//FF ONLY
	//clear();
	var htm="<DIV CLASS=title><TABLE BORDER=1>";
	//htm+="<TR><TD COLSPAN=4>debug() sequence.length="+sequence.length+"</TD></TR>";
	htm+="<TH>i</TH><TH>port</TH><TH>dist</TH><TH>via</TH><TH>nb</TH>";
	for(var i=0;i<sequence.length;i++){
		htm+="<TR><TD>["+i+"]";
		htm+="<TD WIDTH=200>"+sequence[i][1]+" ("+sequence[i][0]+")\t";//port
		htm+="<TD CLASS=r WIDTH=100>"+sequence[i][4]+"nm";//distance
		htm+="<TD CLASS=c>"+sequence[i][6];//server via
		if(sequence[i][8])nb=sequence[i][8].length; else nb=0;
		htm+="<TD WIDTH=100 CLASS=r>"+nb;//nb coords
		htm+="</TR>";
	}
	msg(htm+"</TABLE></DIV>");
}

function checkspeed(){
	var spd=$("speed").value*1;
	if(!spd)spd=10;
	if(spd<1)spd=10;
	if(spd>40)spd=10;
	$("speed").value=spd;
}
function checkdraft(){
	var drf=$("draft").value*1;
	if(!drf)drf=10;
	if(drf<1)drf=10;
	if(drf>30)drf=30;
	$("draft").value=drf;
}


function set_spd(val,pos){//SET SPEED
	if(val<1)return;
	sequence[pos][3]=val;
	build();
}

function set_days(val,pos){//SET NB DAYS
	if(val<1)return;
	sequence[pos][2]=val;
	build();
}


var sequence=new Array();

function error(htm){alert(htm);}
function msg(str){$("more").innerHTML=str;}

var maxstep=12;// Max nb step
var locked=false;
var last_a=0;
var last_b=0;

//INIT DLIST

var p0_id;
var p1_id;
var p2_id;
var p3_id;
var p4_id;
var p5_id;
var p6_id;
var p7_id;
var p8_id;
var p9_id;
var p10_id;
var p11_id;
var p12_id;


var c;
var dist = new Array();//server distances
var routes = new Array();//server routes
var viacodes = new Array();//server viacodes	
var vias = new Array();//user via
var num=0;//sequence position

var a=0;//port "from" id
var fr="";//port "from" str


function evale(js){
	//alert(js);
	eval(js);
}

function onloade(){
	msg("checking login...");
	new Ajax.Request("check_login.php?&r="+Math.random(), 
	{
		onComplete: function(xhr){
			eval(xhr.responseText);
		}
	});
}



function autoload(){// ONLOAD //
	/*
	var md5="<?=$_GET[load]?>";
	if(md5){
		//alert("md5="+md5);
		msg("loading "+md5+"...");
		new Ajax.Request("load_proforma.php?&r="+Math.random(), 
		{
			method: 'POST', 
			parameters: "&md5="+md5, 
			onComplete: function(xhr){
				//alert(xhr.responseText);
				eval(xhr.responseText);
			}
		});

	}else{
		build();
	}
	*/
	window.status="autoload";
	build();
}



function get_frto(o){
	
	if(o.value=="")return;

	var num=o.id.substr(1, o.id.length-1)*1;
	if(!sequence[num])sequence[num]=new Array();
	
	var fr=$("p"+num).value;//port strings
	var id=eval(o.id+"_id");

	window.status="get_frto() - ID="+o.id+" - num="+num+" - fr="+fr+" - id="+id;//
	
	if(sequence[num][0] && sequence[num][0]==id)return;//no changes

	if(num>0){
		if(sequence[(num-1)][0]==id){
			msg("same port");
			return;//same port
		}
	}


	sequence[num][0]=id;
	sequence[num][1]=fr;

	if(!sequence[num][0]){msg("error : !sequence[num][0]");return;}//id
	if(!sequence[num][1]){msg("error : !sequence[num][1]");return;}//str

	build();
	
	if(num>0){
		if(sequence[(num+1)]){
			//alert("clear "+(num+1));
			sequence[(num+1)][2]=0;
			sequence[(num+1)][3]=0;
			sequence[(num+1)][4]=0;
			sequence[(num+1)][5]="";
			sequence[(num+1)][6]=new Array();
			sequence[(num+1)][7]=new Array();
			sequence[(num+1)][8]=new Array();
		}else{
			//msg("!sequence["+(num+1)+"]");
		}
		get_dist(num);

	}else{//num==0
		if(sequence[1])get_dist(1);
		else show_startpoint(id);
	}
}


function get_dist(num){

	if(num==0){msg("get_dist() - num==0");return;}	

	if(!sequence[num]){msg("get_dist() !sequence["+num+"]");return;}


	var a=sequence[(num-1)][0];
	var b=sequence[num][0];
	var v=sequence[num][7];
	port_a=sequence[(num-1)][1];
	port_b=sequence[num][1];

	if(!v)v="";

	//msg("get_dist("+num+") please wait...");

	$("selector").show();
	$("selector").style.width=600;
	$("selector").innerHTML="<BR><BR>Calculating distance from "+port_a+" to "+port_b+"<BR>please wait...<BR><IMG SRC=gif/hg.gif><BR><BR><BR>";
	//$("dist"+num).innerHTML="please wait...";

	locked=true;
	new Ajax.Request(
	"get-plots.php", 
	{
		method: 'POST', 
		parameters: "a="+a+"&b="+b+"&v="+v,
		onComplete: function(o){
			if(o.responseText){
				$("selector").hide();
				eval(o.responseText);
				selector(num);
				msg("");
				return;
			}else{
				alert("error! no responseText");
			}
		}
	});
}



//var min_draft="";

var port_id;
var port_str;

function select_seg(num,segnum){

	if(!sequence[num]){msg("select_seg() !sequence["+num+"]");return;}

	//console.log("select_seg("+num+","+segnum+")");

	locked=false;

	var current_day=0;
	if(sequence[num][2])current_day=sequence[num][2];

	var current_spd=0;
	if(sequence[num][3])current_spd=sequence[num][3];

	var current_via=new Array();//user via
	if(sequence[num][7])current_via=sequence[num][7];
	
	window.status="port_id="+port_id+" - port_str="+port_str+" - dist="+dist[segnum];

	var dat=new Array();
	dat[0]=port_id;//PORT_A ID
	dat[1]=port_str;//PORT_A_STR
	dat[2]=current_day;//DAYSINPORT
	dat[3]=current_spd;//SPEED
	dat[4]=dist[segnum];//DISTANCE
	dat[5]=min_draft[segnum];//Min draft for this seg (string)
	dat[6]=viacodes[segnum];//SERVER VIA POINTS
	dat[7]=current_via;//user Via code(s) (Array)
	dat[8]=routes[segnum];//(Array)

	sequence[num]=dat;
	
	via_selected=true;

	build();//reconstruct
	drawline(num);
}



var lblu;
function blu(o){//highlight selection
	if(lblu)lblu.removeClassName("sel");
	$(o).addClassName("sel");
	lblu=o;
}

var via_selected=false;
var port_a;
var port_b;

function selector(num){//PROPOSE MANY ROUTES for step num
	
	via_selected=false;
	if(!num){msg("selector() !num");return;}
	if(viacodes.length==0)return;
	if(viacodes.length==1){select_seg(num,0);return;}
	
	var clas="a";

	var htm="Select route from '"+port_a+"' to '"+port_b+"'<BR>";
	htm+="<TABLE WIDTH=580 STYLE='background-color:#D5E4F2;border-color:#B8CFE9;padding:5;border-width:4'>";
	htm+="<TH>Via</TH><TH>Min.draft</TH><TH WIDTH=60>Distance</TH>";
	
	for(var ii=0; ii < viacodes.length; ii++){
		
		htm+="<TR ONCLICK='select_seg("+num+","+ii+");blu(this);' ONDBLCLICK=close_selector() CLASS="+clas+" STYLE='cursor:pointer'>";
		htm+="<TD>";

		var strs=new Array();
		for(var k=0;k<viacodes[ii].length;k++){//

			var viaid=viacodes[ii][k];
			if(viaid>92)continue;//scotch
			var vp=viap[viaid];//via.js

			//Show only Suez, Good hope, Panama, Kiel canal, Skaw are interesting. (obi)x
			if(viaid!=1 && viaid!=2 && viaid!=3 && viaid!=4 && viaid!=6 && viaid!=14)continue;
			if(vp[0])strs[strs.length]=vp[0];
		}

		if(strs.length>0)htm+=strs.join(", ");
		htm+="</TD><TD>"+min_draft[ii]+"</TD><TD CLASS=r>"+dist[ii]+"nm</TD></TR>";
		if(clas=="a"){clas="b";}else{clas="a";}//toggle classes
	}
	
	htm+="<TR><TD ALIGN=CENTER COLSPAN=2><BUTTON ONCLICK=close_selector() STYLE='width:80'><IMG SRC=gif/add.gif ALIGN=ABSMIDDLE> Ok</BUTTON></TD></TR>";
	htm+="</TABLE><BR>";

	$("selector").show();
	$("selector").innerHTML = htm;
	msg("Select your route");
}



function close_selector(){
	//alert("num="+num);
	//alert("via="+sequence[num][9]);
	if(!via_selected){alert("Select a via");return;}
	$("selector").hide();
	msg("ok");
}

function remstep(num){

	if(!confirm("Remove this step ?"))return;
	

	
	var nseq=new Array();
	for(var i=0;i<sequence.length;i++){
		if(i!=num){
			nseq[nseq.length]=sequence[i];
		}else{
			msg("pop step: "+i);
		}
	}

	//clear droplist #i
	eval("p"+i+"_id=0;");

	sequence=nseq;
	build();
	get_dist(num);
}



var wine;
wine=new Window();
Windows.addObserver({onEndMove: handleEndMove});
//Windows.addObserver({onEndMove: handleEndMove});
var l=50;
var t=50;
function handleEndMove(eventName, win){
	windz = win;
	setTimeout(function(){
		l = parseFloat(windz.element.getStyle('left'));
		t = (parseFloat(windz.element.getStyle('top'))-parseFloat(document.body.scrollTop));
		//console.log("handleEndMove - l="+l+" ; t="+t);
	},20);
}

var currentstep=0;

function pop_login(){
	kill();
	wine = new Window({title: "Login", width:420, height:300, url: 	"login_dialog.php", resizable:true, draggable:true, recenterAuto:true, minimizable:false, maximizable:false, wiredDrag:true});
	wine.showCenter();
	msg("Login");
}

function pop_via(i){

	if(i==0)return;
	
	msg("Select via point");
	kill();
	num=i;
	
	wine = new Window({title: "Select via point(s)", width:200, height:300, left:20, url: 	"via.php", resizable:true, draggable:true, recenterAuto:true, minimizable:true, maximizable:false, wiredDrag:true});
	wine.show();
}

function kill(){
	wine.hide();
	$("selector").hide();
	document.body.focus();
}




var c=new Array();//datas from win

function setfromto(from,to,c){//DRAW "from point" and "to point"

	//from
	var point = new GLatLng(c[0][0], c[0][1]);
	var marker = new GMarker(point,{icon:iconStart, title: from });//icon:iconMole, 
	map.addOverlay(marker);

	//to
	var point = new GLatLng(c[c.length-1][0], c[c.length-1][1]);
	var marker = new GMarker(point,{icon:iconEnd, title: to });//icon:iconMole, 
	map.addOverlay(marker);

}


function get_seg(segnum){//sequence[i]

	var a = sequence[segnum][0];
	var b = sequence[segnum][2];
	var vias = sequence[segnum][7];
	//console.log("vias="+vias);

	if(!a)return;
	if(!b)return;
	if(a < 1)return;
	if(b < 1)return;
	if(a == b)return;

	new Ajax.Request(
	"get-plots2.php", 
	{
		method: 'POST', 
		parameters: "a="+a+"&b="+b+"&v="+vias,

		onComplete: function(o){
			if(o.responseText){
				//alert(o.responseText);
				eval(o.responseText);
				draw_seg(segnum);
			}else{
				alert(o.responseText);
			}
		}
	});
}