var ISEP='«', LSEP='»',CRLFSEP='¦',CRLF='\r\n';
sp="                                        ";
var LB_REF_SPACEWIDTH=31;
var LB_ITEM_PCS_WIDTH=7;
var LB_ITEM_DESC_WIDTH=36;
var LB_ITEM_WGT_WIDTH=9;
var LB_ITEM_VOL_WIDTH=15;
var LB_ITEM_REFQLF_WIDTH=4;
var LB_ITEM_REF_WIDTH=36;

function UpdateListBox(lb,bUpdate)
{
	var f=currDlg.document.Form, ref,txt="",val="",iNo,bUpdateSums=false,bDo=false;
	SetLbIndex(lb);
	if(lb.selectedIndex>=0 || !bUpdate)
	{
		if(lb.name=="References")
		{
			if(f.tmpRefType[f.tmpRefType.selectedIndex].value.length>0 && f.tmpRef.value.length>0)
			{
				bDo=true;
				ref=f.tmpRefType[f.tmpRefType.selectedIndex].text.substr(0,LB_REF_SPACEWIDTH);
				txt=ref + sp.substr(0,LB_REF_SPACEWIDTH-ref.length) + f.tmpRef.value;
				val=f.tmpRefType[f.tmpRefType.selectedIndex].value;
				if(!bUpdate)
				{
					iNo=parseInt(f.NrOfCustRefValues.value) + 1;
					f.NrOfCustRefValues.value=iNo;
					AddContent(f.ReferencesContent,"RefType"+iNo,val,"Ref"+iNo,f.tmpRef.value);
				}
				else
					RefreshContent(lb);
				f.tmpRefType.selectedIndex=0;
				f.tmpRefType.focus();
				f.tmpRef.value="";
			}
		}
		else if(lb.name=="Items")
		{
			if(f.tmpDescription.value.length>0)
			{
				bDo=true;
				if(bUpdate)
				{
					txt=f.tmpPcs.value + sp.substr(0,LB_ITEM_PCS_WIDTH-f.tmpPcs.value.length);
					f.tmpWgt.value=f.tmpWgt.value.replace(/,/gi,".");
					f.tmpVol.value=f.tmpVol.value.replace(/,/gi,".");
					txt=txt + f.tmpDescription.value + sp.substr(0,LB_ITEM_DESC_WIDTH-f.tmpDescription.value.length);
					txt=txt + f.tmpWgt.value + sp.substr(0,LB_ITEM_WGT_WIDTH-f.tmpWgt.value.length);
					txt=txt + f.tmpVol.value + sp.substr(0,LB_ITEM_VOL_WIDTH-f.tmpVol.value.length);
					for(i=1;i<=parseInt(f.NrOfItemRefFields.value);i++)
					{
						ref= eval("f.tmpItemRef" + i);
						if(ref.value.length>0)
						{
							qlf= eval("f.tmpItemRefQlf" + i);
							txt=txt + qlf.value + sp.substr(0,LB_ITEM_REFQLF_WIDTH-qlf.value.length);
							txt=txt + ref.value + sp.substr(0,LB_ITEM_REF_WIDTH-ref.value.length);
						}
					}
				}
				else
				{
					iNo=parseInt(f.NrOfItemValues.value) + 1;
					f.NrOfItemValues.value=iNo;
					for(i=1;i<=f.NrOfItemRefFields.value;i++)
					{
						ref= eval("f.tmpItemRef" + i);
						qlf= eval("f.tmpItemRefQlf" + i);
						if(ref.value.length>0)
							AddContent(f.ItemsContent,"RefQlf"+iNo+"_"+i,qlf.value,"Ref"+iNo+"_"+i,ref.value);
					}
					AddContent(f.ItemsContent,"Pcs"+iNo,f.tmpPcs.value,"Desc"+iNo,f.tmpDescription.value,"Wgt"+iNo,f.tmpWgt.value,"Vol"+iNo,f.tmpVol.value);
				}
				f.tmpPcs.value="";
				f.tmpDescription.value="";
				f.tmpWgt.value="";
				f.tmpVol.value="";
				f.tmpPcs.focus();
				for(i=1;i<=parseInt(f.NrOfItemRefFields.value);i++)
				{
					field= eval("f.tmpItemRef" + i);
					field.value="";
				}
				bUpdateSums=true;
			}
		}
		if(bDo)
		{
			if(bUpdate)
			{
				SetLbIndex(lb);
				lb[lb.selectedIndex].value=val;
				lb[lb.selectedIndex].text=txt;
				RefreshContent(lb);
			}
			else
				RefreshListBox(lb);
			if(bUpdateSums)
				GetItemSums(lb);
		}
	}
}
function SetLbIndex(lb)
{
	return;
	if(lb.selectedIndex==-1)
	{
		tmp= eval(lb.name + "LastSelectedIndex");
		lb.selectedIndex=tmp;
	}
}
function ClickListBox(lb)
{
	var f=currDlg.document.Form, ref,txt="",val="",pos,qlf,iLocate,i;
//	SetLbIndex(lb);
	if(lb.selectedIndex>=0)
	{
		txt = lb[lb.selectedIndex].text;
		val = lb[lb.selectedIndex].value;
		if(lb.name=="References")
		{
			if(!SetOption(f.tmpRefType,val))
				f.tmpRefType.options[0].selected=true;
			f.tmpRef.value=txt.substr(LB_REF_SPACEWIDTH);
		}
		else if(lb.name="Items")
		{
			f.tmpPcs.value=RTrim(txt.substr(0,LB_ITEM_PCS_WIDTH));
			f.tmpDescription.value=RTrim(txt.substr(LB_ITEM_PCS_WIDTH,LB_ITEM_DESC_WIDTH));
			f.tmpWgt.value=RTrim(txt.substr(LB_ITEM_PCS_WIDTH+LB_ITEM_DESC_WIDTH,LB_ITEM_WGT_WIDTH));
			f.tmpVol.value=RTrim(txt.substr(LB_ITEM_PCS_WIDTH+LB_ITEM_DESC_WIDTH+LB_ITEM_WGT_WIDTH,LB_ITEM_VOL_WIDTH));
			pos=LB_ITEM_PCS_WIDTH+LB_ITEM_DESC_WIDTH+LB_ITEM_WGT_WIDTH+LB_ITEM_VOL_WIDTH;
			for(i=1;i<=parseInt(f.NrOfItemRefFields.value);i++)
			{
				field= eval("f.tmpItemRef" + i);
				field.value="";
			}
			for(i=1;i<=parseInt(f.NrOfItemRefFields.value);i++)
			{
				qlfvalue=RTrim(txt.substr(pos+(i-1)*(LB_ITEM_REFQLF_WIDTH+LB_ITEM_REF_WIDTH),LB_ITEM_REFQLF_WIDTH));
				refvalue=RTrim(txt.substr(pos+LB_ITEM_REFQLF_WIDTH+(i-1)*(LB_ITEM_REFQLF_WIDTH+LB_ITEM_REF_WIDTH),LB_ITEM_REF_WIDTH));
				for(iLocate=1;iLocate<=parseInt(f.NrOfItemRefFields.value);iLocate++)
				{
					qlf= eval("f.tmpItemRefQlf" + iLocate);
					if(qlf.value==qlfvalue)
					{	
						ref= eval("f.tmpItemRef" + iLocate);
						ref.value=refvalue;
					}
				}
			}
		}
	}
}
function DeleteFromListBox(lb)
{
	var f=currDlg.document.Form, index,iPos,i;
	SetLbIndex(lb);
	if(lb.selectedIndex>=0)
	{
		if(lb.name=="References")
		{
			f.tmpRefType.selectedIndex=0;
			f.tmpRef.value="";
			f.NrOfCustRefValues.value=parseInt(f.NrOfCustRefValues.value) - 1;
		}
		else if(lb.name=="Items")
		{
			DeleteFromItemFields();
			f.NrOfItemValues.value=parseInt(f.NrOfItemValues.value) -1;
		}
		lb[lb.selectedIndex]=null;
		RefreshContent(lb);
		if(lb.name=="Items")
			GetItemSums(lb);
	}
}
function AddContent(obj) // Multi
{
	var i,args=arguments; 
//this function may be called directly from .asp file (this file is then included in
//the running .asp file eg create_shipment.asp) or it might be called in the code
//frame by a function with the same name (defined js_func_header). When calling
//this function from another function (just passing tha parameters on) the arguments
//parameters does not come along to the function in the code-frame. In this case the
//function (defined in js_func_header) will be sent in an array (the first agrumnet[1])
//eg c.Disable(bDisable,arguments).
//To use a code frame saves you from sendning out all javascripts functions on each request
//since the code frame is not reloaded all the time JR 2001-08-07
	if(typeof(arguments[1])=="object")
		args=arguments[1];
	for(i=1;i<args.length;i=i+2)
		obj.value = obj.value + ISEP + args[i] + LSEP + args[i+1];
}
function RefreshContent(lb) // fetches from listbox to hidden fields
{
	var i,val,txt, f=currDlg.document.Form,x,pos,cont;
	cont= eval("f." + lb.name + "Content");
	cont.value="";
	for(i=0;i<lb.length;i++)
		if(lb.name=="References")
		{
			val=lb[i].value;
			txt=lb[i].text.substr(LB_REF_SPACEWIDTH);
			AddContent(cont,"RefType"+(i+1),val,"Ref"+(i+1),txt); 
		}
		else if(lb.name=="Items")
		{
			txt=lb[i].text;
			Pcs=RTrim(txt.substr(0,LB_ITEM_PCS_WIDTH));
			Desc=RTrim(txt.substr(LB_ITEM_PCS_WIDTH,LB_ITEM_DESC_WIDTH));
			Wgt=RTrim(txt.substr(LB_ITEM_PCS_WIDTH+LB_ITEM_DESC_WIDTH,LB_ITEM_WGT_WIDTH));
			Vol=RTrim(txt.substr(LB_ITEM_PCS_WIDTH+LB_ITEM_DESC_WIDTH+LB_ITEM_WGT_WIDTH,LB_ITEM_VOL_WIDTH));
			pos=LB_ITEM_PCS_WIDTH+LB_ITEM_DESC_WIDTH+LB_ITEM_WGT_WIDTH+LB_ITEM_VOL_WIDTH;
			for(x=1;x<=parseInt(f.NrOfItemRefFields.value);x++)
			{
				qlfvalue=RTrim(txt.substr(pos+(x-1)*(LB_ITEM_REFQLF_WIDTH+LB_ITEM_REF_WIDTH),LB_ITEM_REFQLF_WIDTH));
				refvalue=RTrim(txt.substr(pos+LB_ITEM_REFQLF_WIDTH+(x-1)*(LB_ITEM_REFQLF_WIDTH+LB_ITEM_REF_WIDTH),LB_ITEM_REF_WIDTH));
				if(refvalue.length>0)
					AddContent(f.ItemsContent,"RefQlf"+(i+1)+"_"+x,qlfvalue,"Ref"+(i+1)+"_"+x,refvalue);
			}
			AddContent(f.ItemsContent,"Pcs"+(i+1),Pcs,"Desc"+(i+1),Desc,"Wgt"+(i+1),Wgt,"Vol"+(i+1),Vol);
		}
}
function GetItemSums(lb)
{
	var f=currDlg.document.Form,i,txt, totPcs=0,totWgt=0.0,totVol=0.0;
	for(i=0;i<lb.length;i++)
	{
		txt=lb[i].text;
		Pcs=RTrim(txt.substr(0,LB_ITEM_PCS_WIDTH));
		Wgt=RTrim(txt.substr(LB_ITEM_PCS_WIDTH+LB_ITEM_DESC_WIDTH,LB_ITEM_WGT_WIDTH));
		Vol=RTrim(txt.substr(LB_ITEM_PCS_WIDTH+LB_ITEM_DESC_WIDTH+LB_ITEM_WGT_WIDTH,LB_ITEM_VOL_WIDTH));
		if(Pcs.length!=0)
			totPcs=totPcs + parseInt(Pcs);
		if(Wgt.length!=0)
			totWgt=totWgt + parseFloat(Wgt);
		if(Vol.length!=0)
			totVol=totVol + parseFloat(Vol);
	}
	f.TotPcs.value=totPcs;
	f.TotWgt.value=totWgt;
	f.TotVol.value=totVol;
}
function RefreshListBox(lb) // fetches from hidden field to listbox
{
	var f=currDlg.document.Form,i,x,iCheck,val,txt,NrOfCustRefValues=0,NrOfItemValues=0,Pcs="",Wgt="",Vol="",Desc="";
	cont= eval("f." + lb.name + "Content");
	arrTempl=cont.value.split(ISEP);
	Arr= new Array();
	iArrCount=0;
	for(i=lb.length-1;i>=0;i=i-1)
		lb[i]=null;
	for(i=0;i<arrTempl.length;i++)
		if(arrTempl[i].length>0)
		{
			tmp=arrTempl[i].split(LSEP);
			if(lb.name=="References")
			{
				if(tmp[0].substr(0,7)=="RefType")
					val=tmp[1];
				else if(tmp[0].substr(0,3)=="Ref")
				{
					txt=GetOptionText(f.tmpRefType,val);
					if(txt.length==0)
						txt=val;
					txt=txt + sp.substr(0,LB_REF_SPACEWIDTH-txt.length) + tmp[1];
					lb[lb.length] = currDlg.CreateOption(txt,val);
					NrOfCustRefValues++;
				}
			}
			else if(lb.name=="Items")
			{
				if(tmp[0].substr(0,3)=="Ref") //Both Ref & RefQlf
					Arr[iArrCount++]=tmp[1];
				else if(tmp[0].substr(0,3)=="Pcs")
					Pcs=tmp[1];
				else if(tmp[0].substr(0,4)=="Desc")
				{
					Desc=tmp[1];
					if(Desc.length>LB_ITEM_DESC_WIDTH)
						Desc=Desc.substr(0,LB_ITEM_DESC_WIDTH);
				}
				else if(tmp[0].substr(0,3)=="Wgt")
					Wgt=tmp[1];
				else if(tmp[0].substr(0,3)=="Vol") //last itemfield
				{
					Vol=tmp[1];
					if(Pcs!="0" || Wgt!="0" || Vol!="0" || Desc!="")
					{
						txt=Pcs + sp.substr(0,LB_ITEM_PCS_WIDTH-Pcs.length);
						txt=txt + Desc + sp.substr(0,LB_ITEM_DESC_WIDTH-Desc.length);
						txt=txt + Wgt + sp.substr(0,LB_ITEM_WGT_WIDTH-Wgt.length);
						txt=txt + Vol + sp.substr(0,LB_ITEM_VOL_WIDTH-Vol.length);
						NrOfItemValues++;
						for(x=0;x<Arr.length;x=x+2)
						{
							//check that ref qlf exist in document.predefined fields
							for(iCheck=1;iCheck<=parseInt(f.NrOfItemRefFields.value);iCheck++)
							{
								Qlf= eval("f.tmpItemRefQlf" + iCheck);
								if(Qlf.value==Arr[x])
									break;
							}
							if(iCheck<(parseInt(f.NrOfItemRefFields.value)+1)) //Qlf exist in doc
							{
								txt=txt + Qlf.value + sp.substr(0,LB_ITEM_REFQLF_WIDTH-Qlf.value.length);
								txt=txt + Arr[x+1] + sp.substr(0,LB_ITEM_REF_WIDTH-Arr[x+1].length);
							}
						}
						lb[lb.length] = currDlg.CreateOption(txt);
					}
					Arr.length=0;
					iArrCount=0;
				}
			}
		}
	if(lb.name=="References")
		f.NrOfCustRefValues.value=NrOfCustRefValues;
	else if(lb.name=="Items")
		f.NrOfItemValues.value=NrOfItemValues;
}
function DeleteContent(obj,val) // Multi
{
	var i,str,iStart,iEnd;
	str=obj.value;
	var args=arguments; 
	if(typeof(arguments[1])=="object")
		args=arguments[1];

	for(i=1;i<args.length;i++)
	{
		iStart=str.search(args[i]);
		iEnd=iStart;
		while(iStart>0 && str.charAt(iEnd)!=ISEP && iEnd<str.length)
			iEnd++;
		str= str.substr(0,iStart-1) + str.substr(iEnd);
		obj.value=str;
	}			
}
function DeleteFromItemFields()
{
	var f=currDlg.document.Form,i;
	f.tmpPcs.value="";
	f.tmpDescription.value="";
	f.tmpWgt.value="";
	f.tmpVol.value="";
	for(i=1;i<=f.NrOfItemRefFields.value;i++)
	{
		field=eval("f.tmpItemRef" + i);
		field.value="";
	}
}
function ResetListBox(lb)
{
	var f=currDlg.document.Form;
	if(lb.name=="References")
	{
		f.tmpRefType.selectedIndex=0;
		f.tmpRef.value="";
		f.NrOfCustRefValues.value="0";
		f.ReferencesContent.value="";
	}
	else if(lb.name=="Items")
	{
		f.tmpPcs.value="";
		f.tmpDescription.value="";
		f.tmpWgt.value="";
		f.tmpVol.value="";
		f.tmpPcs.focus();
		f.NrOfItemValues.value="0";
		f.ItemsContent.value="";
		DeleteFromItemFields();
	}
	for(i=lb.length-1;i>=0;i=i-1)
		lb[i]=null;
}
function ResetDocument(f)
{
	var f=currDlg.document.Form;
	currDlg.document.Form.reset()
	ResetListBox(f.References);
	ResetListBox(f.Items);
	GetTemplateFields();
}
// Code transferred from create_shipment.asp to save bytes transferred to browser
function CreateOption(txt,val)
{
	var tmpOption=  new Option(txt,val);
	return tmpOption;
}

function FieldKey(theField)
{
	var f,max;
	f=document.Form;
	if(theField.name=="Remarks" && theField.value.length>0)
	{
		max=3000;
		if(theField.value.length>max)
		{
			alert(lngJsRemarksField + " " + max + " " + lngJsCharacters);
			theField.value= theField.value.substr(0,max);
		}
	}
}

function Focus(field)
{
	var pos,f,d=document.all;
	if(field.name.substring(0,7)=="DepDate" && field.name.charAt(field.name.length-1)!='1')
	{
		f=document.Form.elements;
		pos=GetFieldOrderNo(document.Form,field.name);
		if(f[pos-1].value.length>0)
		{
			pos=GetFieldOrderNo(document.Form,"ArrDate" + (field.name.charAt(field.name.length-1)-1));
			if(field.value.length==0 && CheckDate(f[pos]))
				field.value=f[pos].value;
		}
	}
}
function NoFocus(field)
{
	var pos,i,f,nrOfFields=5,sum,name,bOrder=false,d=document.all;
	if(document.Form.DocType.value=="TO")
		bOrder=true;
	if(!bOrder && field.name=="FromCityCode" && field.value.length==3 && document.Form.From1.value.length==0)
		document.Form.From1.value=field.value;	
	switch(field.name)
	{
		case "TotWgt":
		case "TotVol":
			field.value=field.value.replace(/,/gi,".");
			break;
		case "tmpPcs":
			if(field.value.length>0 && !IsNumeric(field.value,false))
				return ErrMsg(field,lngJsPEnumericPieces,true);
			break;
		case "tmpWgt":
			if(field.value.length>0)
			{
				field.value=field.value.replace(/,/gi,".");
				if(!IsNumeric(field.value,true))
					return ErrMsg(field,lngJsPEWeight + "!",true);
			}
			break;
		case "tmpVol":
			if(field.value.length>0)
			{
				field.value=field.value.replace(/,/gi,".");
				if(!IsNumeric(field.value,true))
					return ErrMsg(field,lngJsPEVolume + "!",true);
			}
			break;
	}
	if(bRoutingInfo)
	{
		if(field.name=="PickupDate" && CheckDate(field))
		{
				if(document.Form.DepDate1.value.length==0)
					document.Form.DepDate1.value=field.value;
				if(document.Form.DeliveryDate.value.length==0)
					document.Form.DeliveryDate.value=field.value;
		}
		if(field.name=="DepartureDate" && CheckDate(field))
		{
			if(document.Form.DepDate1.value.length==0)
				document.Form.DepDate1.value=field.value;
			if(document.Form.ArrivalDate.value.length==0)
				document.Form.ArrivalDate.value=field.value;
		}
	}
	f=document.Form.elements;
	pos=GetFieldOrderNo(document.Form,field.name);
	if(field.name=="ShipCountry" && field.value!=" " && f.FromCountry.value==" ")
		SetOption(f.FromCountry,field.value);
	if(field.name=="ConsCountry" && field.value!=" " && f.ToCountry.value==" ")
		SetOption(f.ToCountry,field.value);
	return true;
}

function InitValues()
{
	var i,f,field,value;
	var bOrderCustomer=false,bOrderAgent=false;
	var p,c= window,bUsingCodeFrame=false,f=document.Form;
	for(var p=0;p<parent.length;p++)
		if(parent.frames[p].name=="code")
			bUsingCodeFrame=true;
	if(bUsingCodeFrame) // CreateOrder Only
	{
		if(Exists(f,"Customer") && f.Customer.type=="select-one")
		{
			if(f.Customer.length<=1 && OrderCustomer=='Y') //fetch values from code frame
			{
				f.Customer.outerHTML=GetFieldFromCodeFrame("Order","Customer");
				f.Customer.selectedIndex=0;
			}
			else if(f.Customer.length>1 && OrderCustomer!="Y")
				if(SaveFieldInCodeFrame("Order","Customer",f.Customer.outerHTML))
					bOrderCustomer=true;
		}
		if(Exists(f,"Agent") && f.Agent.type=="select-one")
		{
			if(f.Agent.length<=1 && OrderAgent=='Y') //fetch values from code frame%>
				f.Agent.outerHTML=GetFieldFromCodeFrame("Order","Agent");
			else if(f.Agent.length>1 && OrderAgent!="Y")
				if(SaveFieldInCodeFrame("Order","Agent",f.Agent.outerHTML))
					bOrderAgent=true
			SetOptionByPart(f.Agent,currAgent);
		}
		if(bOrderCustomer || bOrderAgent)//Save in session variables
		{
			sz=""
			if(bOrderCustomer)
				sz=sz + "&Customer=Y";
			if(bOrderAgent)
				sz=sz + "&Agent=Y";
			Remember("Order",sz);//Save in session via a sep frame reload
		}
	}
	InitCode(window);
	f=document.Form;
	if(Exists(f,"OrderNo") && f.OrderNo.type=="text")
		f.OrderNo.focus();
	//copy country drop down to empty country drop down
	search = new RegExp(">","gi");
	cpyFr=f.FromCountry.outerHTML.substr(f.FromCountry.outerHTML.search(search));
	f.ShipCountry.outerHTML=f.ShipCountry.outerHTML.substr(0,f.ShipCountry.outerHTML.search(search)+1) + cpyFr;
	f.ConsCountry.outerHTML=f.ConsCountry.outerHTML.substr(0,f.ConsCountry.outerHTML.search(search)+1) + cpyFr;
	f.ToCountry.outerHTML=f.ToCountry.outerHTML.substr(0,f.ToCountry.outerHTML.search(search)+1) + cpyFr;
	GetTemplateFields();
	if(templStr.length>0)
		GetTemplateValues(templStr);
	f.References.style.font = "normal 9pt Courier New";
	f.Items.style.font = "normal 9pt Courier New";
	f.tmpRefType.font = "normal 9pt Courier New";
	if(f.ConsCountry.type=="select-one")
		SetOption(f.ConsCountry,szConsCountry);
	if(f.ShipCountry.type=="select-one")
		SetOption(f.ShipCountry,szShipCountry);
	if(f.FromCountry.type=="select-one")
		SetOption(f.FromCountry,szFromCountry);
	if(f.ToCountry.type=="select-one")
		SetOption(f.ToCountry,szToCountry);
	if(Exists(f,"Product") && szProduct.length>0)
		SetOption(f.Product,szProduct);		

//	CheckRadio(f.TransportMode,f.ModeOfTrans.value);
	ChangeModeOfTransport(f.ModeOfTrans.value);
	if(Exists(f,"ConsNo") && f.ConsNo.type!="hidden")
		f.ConsNo.focus();
	else if(Exists(f,"PoNo") && f.PoNo.type!="hidden")
		f.PoNo.focus();
	if(Exists(f,"Remarks"))
		f.Remarks.wrap = "hard";
	if(!bUpdate)
	{
		f.BookingDate.value= GetDate();
		f.BookingTime.value= GetTime();
	}
	RefreshListBox(f.References);
	RefreshListBox(f.Items);

	if(f.selectedCountry1.value!="-1")
		f.ShipCountry.selectedIndex=f.selectedCountry1.value;
	if(f.selectedCountry2.value!="-1")
		f.ConsCountry.selectedIndex=f.selectedCountry2.value;
	if(f.selectedCountry3.value!="-1")
		f.ToCountry.selectedIndex=f.selectedCountry3.value;
	if(f.selectedCountry4.value!="-1")
		f.FromCountry.selectedIndex=f.selectedCountry4.value;
	SaveSelection();
}
function ModalSelectChanged(fObj)
{
	var iRouteNo=fObj.name.substr(9);
	ChangeModal(iRouteNo,fObj.value);
}

function ChangeModal(iRouteNo,iTo)
{
	var fm=document.Form,f,iLocMax;
	var iCarrierMax=14, iIdMax=14; // def values
	switch(iTo)
	{
		case "1":
			iLocMax=iMaxSeaLength;
			break;
		case "2":
			iLocMax=14;
			break;
		case "3":
			iLocMax=iMaxRoadLength;
			break;
		case "4":
			iLocMax=3;
			iCarrierMax=3;
			iIdMax=6;
			break;
	}
	f=eval("fm.From" + iRouteNo);
	f.value=f.value.substr(0,iLocMax);
	f.maxLength=iLocMax;

	f=eval("fm.To" + iRouteNo);
	f.value=f.value.substr(0,iLocMax);
	f.maxLength=iLocMax;
	
	f=eval("fm.Text" + iRouteNo);
	f.value=f.value.substr(0,iCarrierMax);
	f.maxLength=iCarrierMax;

	f=eval("fm.Id" + iRouteNo);
	f.value=f.value.substr(0,iIdMax);
	f.maxLength=iIdMax;
}
function ChangeModeOfTransport(iTo)
{
	var pos,i,f,nrOfFields=5,fm,fFrom,fTo,fDate,fText,fId;
	var txt=document.all.item("txt"),id = document.all.item("id");
	if(iTo=="ZZZ")
		iTo=bOrder?"8":"4";
	fm=document.Form;
	fm.ModeOfTrans.value=iTo;
	var tdcontainer=document.all.item("tdContainer")
	if (tdcontainer != null)
	{
	tdcontainer.style.display=iTo==1?"":"none";
	}
	if(iTo=="5") iTo="1";
	if(iTo=="6") iTo=bOrder?"8":"4";
	if(bRoutingInfo)
	{
		for(i=1;i<6;i++)
		{
			fFrom=eval("fm.From" + i);
			fTo=eval("fm.To" + i);
			fDate=eval("fm.DepDate" + i);
			fText=eval("fm.Text" + i);
			fId=eval("fm.Id" + i);
			if(!fFrom.value.length && !fTo.value.length && !fDate.value.length && !fText.value.length && !fId.value.length)
			{
				SetOption(eval("fm.ModalMode" + i),iTo);
				ChangeModal(i,iTo);
			}
		}
	}
}
function SaveSelection()
{
	var f=document.Form;
	f.selectedCountry1.value=f.ShipCountry.selectedIndex;
	f.selectedCountry2.value=f.ConsCountry.selectedIndex;
	f.selectedCountry3.value=f.ToCountry.selectedIndex;
	f.selectedCountry4.value=f.FromCountry.selectedIndex;
}
function ValidateInput(theForm)
{
	var st,i=0,f,listOfFields,pos,nrOfFields=4,iLastRoutingRow=0;
	var type,date,time,tmp;
	f=theForm;
	// check length of mandatory fields
	listOfFields= new Array()
	if(f.UserType.value!="C" && Exists(f,"Customer"))
	{
		tmp=RTrim(f.Customer.options[f.Customer.selectedIndex].value);
		if(tmp.length==0)
			return ErrMsg(f.Customer,lngJsPChooseCustomer + "!");
	}
	if(bAgent && (f.UserType.value!="C" && Exists(f,"Agent")))
	{
		tmp=RTrim(f.Agent.options[f.Agent.selectedIndex].value);
		if(tmp.length==0)
			return ErrMsg(f.Agent,lngJsPChooseAgent + "!");
	}
	if(!bOrder)
	{
		if(!(f.TotPcs.value.length && IsNumeric(f.TotPcs.value,false)))
		{
			return ErrMsg(f.TotPcs,lngJsPlsEnterPcs);
		}
		if(!(f.TotWgt.value.length && IsNumeric(f.TotWgt.value,true)))
			return ErrMsg(f.TotWgt,lngJsPlsEnterWgt);
	}
	if(!bOrder || !bHidePickupAndDeliveryDates)
	{
		if(!CheckDate(f.PickupDate) && f.PickupDate.value.length>0)
			return ErrMsg(f.PickupDate,lngJsPEPickupDate + "!\r\n (" + lngJsUseYYYY + ")");
		if(f.PickupTime.value.length>0 && !CheckTime(f.PickupTime))
			return ErrMsg(f.PickupTime,lngJsPEPickupTime + "!\r\n (" + lngJsUseHHMM + ")");
		if(!CheckDate(f.DeliveryDate) && f.DeliveryDate.value.length>0)
			return ErrMsg(f.DeliveryDate,lngJsPEDeliveryDate + "!\r\n (" + lngJsUseYYYY + ")");
		if(f.DeliveryTime.length>0 && !CheckTime(f.DeliveryTime))
			return ErrMsg(f.DeliveryTime,lngJsPEDeliveryTime + "!\r\n (" + lngJsUseHHMM+ ")");
	}
	if(bOrder && f.BookingDate.value.length>0 && !CheckDate(f.BookingDate))
		return ErrMsg(f.BookingDate,lngJsPEBookingDate + "!\r\n (" + lngJsUseYYYY + ")");
	for(i=0;i<listOfFields.length-1;i=i+2)
	{
		if(listOfFields[i].value.length==0)
			return ErrMsg(listOfFields[i],lngJsThefield + ": " + listOfFields[i+1] + "\r\n" + lngJsMayNot + "!");	
	}
	if(f.ModeOfTrans.value=="4")
	{
		if(bOrder)
		{
			if(Exists(f,"OrderNo") && f.OrderNo.value.length==0)
				return ErrMsg(f.OrderNo,lngJsPEOrderNo + "!");
		}
		else
		{
			if(f.ConsNo.value.length==0)
				return ErrMsg(f.ConsNo,lngJsPEShipmentNo + "!");
			if(f.MasterNo.value.length>0)
			{ 
				if(f.MasterNo.value.length==12 && f.MasterNo.value.charAt(3)=="-")
					f.MasterNo.value=f.MasterNo.value.substr(0,3) + f.MasterNo.value.substr(4);
				if(!IsNumeric(f.MasterNo.value,false))
					return ErrMsg(f.MasterNo,lngJsMasterNonNumeric + "!");
				if(f.MasterNo.value==0 && !CheckAwbNo(f.ConsNo))
					f.DocType.value="HAWB"
			}
			if(f.MasterNo.value==0 && !CheckAwbNo(f.ConsNo))
				f.DocType.value="HAWB"
		}
	}
	else
	{
		if(!bOrder && f.ConsNo.value.length==0)
			return ErrMsg(f.ConsNo,lngJsPEShipmentNo + "!");
		if(bOrder && f.OrderNo.value.length==0)
			return ErrMsg(f.OrderNo,lngJsPEOrderNo);
	}
	if(!IsNumeric(f.TotPcs.value,false))
		return ErrMsg(f.TotPcs,lngJsPENumericValue + " " + lngJsPiecesItem);
	if(!IsNumeric(f.TotWgt.value,true))
		return ErrMsg(f.TotWgt,lngJsPENumericValue + " " + lngJsWeightItem);
	if(!IsNumeric(f.TotChrWgt.value,true))
		return ErrMsg(f.TotChrWgt,lngJsPENumericValue + " " + lngJsWeightItem);
	if(f.TotVol.value.length>0)
	{
		if(!IsNumeric(f.TotVol.value,true))
			return ErrMsg(f.TotVol,lngJsPENumericValue + " " + lngJSVolumeItem);
	}
	if(!bOrder)
	{
		f=theForm.elements;
		for(i=0;i<5;i++)
		{
			fFrom=eval("f.From" + (i+1));
			fTo=eval("f.To" + (i+1));
			fDate=eval("f.DepDate" + (i+1));
			fText=eval("f.Text" + (i+1));
			fId=eval("f.Id" + (i+1));
			if(i==0 || fTo.value!="" || fDate.value!="" || fText.value!="" || fId.value!="") // ignore from in this length check for all but first routing row
			{
				iLastRoutingRow=i;
				if(fFrom.value.length==0)
					return ErrMsg(fFrom,lngJsPEOrigin + " " + (i+1));	
				if(fTo.value.length==0)
					return ErrMsg(fTo,lngJsPEDestination + " " + (i+1));	
				if(!CheckDate(fDate))
					return ErrMsg(fDate,lngJsPEValidDeparture + (i+1) + ")!\r\n(" + lngJsUseYYYY + ")");
				if(fText.value.length==0)
					return ErrMsg(fText,"Field value missing!");	
				if(fId.value.length==0)
					return ErrMsg(fId,"Field value missing!");	
			}
		}
	}
	if(bOrder && Exists(f,"NrOfMilestonesFields"))
	{
		iNo=f.NrOfMilestonesFields.value;
		for (i=1;i<=iNo;i++)
		{
			type=eval("f.MsType" + i);
			date=eval("f.MsDate" + i);
			time=eval("f.MsTime" + i);
			if(type.value!=" " || date.value.length>0 || time.value.length>0)
			{
				if(type.value==" ")
					return ErrMsg(type,lngJsPEMilestoneRow + " " + i +")!");
				else if(date.value.length==0)
					return ErrMsg(date,lngJsPEMilestoneDate + " (" + lngJsRow + " " + i +")!");
				else if(!CheckDate(date))
					return ErrMsg(date,lngJsPEMilestoneDate + " (" + lngJsRow + " " + i +")!\r\n");
				else if(time.value.length>0 && !CheckTime(time))
					return ErrMsg(time,lngJsPEMilestoneTime + "(" + lngJsRow + " " + i +")!\r\n");
			}
		}
	}
	if(!bOrder || theForm.BookingDate.value.length==0 || theForm.BookingTime.value.length==0)
	{
		if(theForm.BookingDate.value.length==0)
		{
			theForm.BookingDate.value= GetDate();
			theForm.BookingTime.value= GetTime();
		}
	}
	if(!bUpdate && Exists(theForm,"ConsNo") && !Contains(theForm.ConsNo.value,'"/\:*?<>|')) // validate consno
		return ErrMsg(theForm.ConsNo,"Invalid Consignment No. or Order No.");
	theForm.action=theForm.action + "Action=Send"
	return true;			
} 
