diff -urNp sworig/source/ui/fldui/inpdlg.cxx sw/source/ui/fldui/inpdlg.cxx
--- sworig/source/ui/fldui/inpdlg.cxx	2005-09-09 15:44:10.000000000 +0800
+++ sw/source/ui/fldui/inpdlg.cxx	2006-08-25 20:23:06.000000000 +0800
@@ -95,6 +95,7 @@ SwFldInputDlg::SwFldInputDlg( Window *pP
 	aOKBT		(this, SW_RES(BT_OK		)),
 	aCancelBT	(this, SW_RES(BT_CANCEL	)),
 	aNextBT		(this, SW_RES(PB_NEXT	)),
+	aPreviousBT		(this, SW_RES(PB_PREVIOUS	)),
 	aHelpBT     (this, SW_RES(PB_HELP    )),
 	pInpFld(0),
 	pSetFld(0),
@@ -104,20 +105,31 @@ SwFldInputDlg::SwFldInputDlg( Window *pP
 	Font aFont(aEditED.GetFont());
 	aFont.SetWeight(WEIGHT_LIGHT);
 	aEditED.SetFont(aFont);
-
-	if( bNextButton )
-	{
-		aNextBT.Show();
-		aNextBT.SetClickHdl(LINK(this, SwFldInputDlg, NextHdl));
-	}
-	else
-	{
-		long nDiff = aCancelBT.GetPosPixel().Y() - aOKBT.GetPosPixel().Y();
-		Point aPos = aHelpBT.GetPosPixel();
-		aPos.Y() -= nDiff;
-		aHelpBT.SetPosPixel(aPos);
-	}
-
+	
+    SwField* pCurrField = rSh.GetCurFld();
+    
+    //if edit input field 
+    if (pCurrField)
+    {
+        //set the modify link to make field update as user type
+	    Link aModifyLk = LINK(this, SwFldInputDlg, ModifyHdl);
+	    aEditED.SetModifyHdl(aModifyLk);
+	    //set the cancel button link
+	    Link aCancelLk = LINK(this, SwFldInputDlg, CancelHdl);
+	    aCancelBT.SetClickHdl(aCancelLk);
+	
+	    aNextBT.SetClickHdl(LINK(this, SwFldInputDlg, NextHdl));
+	    aPreviousBT.SetClickHdl(LINK(this, SwFldInputDlg, PrevHdl));
+    }
+    else //newly create field
+    {
+        aNextBT.Hide();
+        aPreviousBT.Hide();
+        //enlarge aEditED to make the dialog looks clean after hide two buttons 
+		Size aSize = aEditED.GetSizePixel();
+		aSize.Height() += aNextBT.GetSizePixel().Height();
+		aEditED.SetSizePixel(aSize);
+    }
 	// Auswertung hier
 	String aStr;
 	if( RES_INPUTFLD == pField->GetTyp()->Which() )
@@ -163,7 +175,24 @@ SwFldInputDlg::SwFldInputDlg( Window *pP
 	aEditED.SetReadOnly( !bEnable );
 
 	if( aStr.Len() )
+	{
 		aEditED.SetText( aStr.ConvertLineEnd() );
+		Selection aNewSelection( 0, aStr.Len() );
+		aEditED.SetSelection( aNewSelection );
+	}
+	aOriStr = aStr;
+	
+	//move the dialog to just above the input field
+	if (pCurrField)
+	{   
+        Point realPos = rSh.GetWin()->LogicToPixel( rSh.GetCrsrDocPos() );
+        long offY = rSh.GetWin()->GetOutOffYPixel();
+        long nWinPosY = realPos.Y() + offY - GetSizePixel().getHeight();
+        if (nWinPosY < 0)
+            nWinPosY = realPos.Y() + offY + GetSizePixel().getHeight()/2 - 14;
+        SetPosPixel( Point(realPos.X(), nWinPosY));
+    }
+    	
 	FreeResource();
 }
 
@@ -214,11 +243,157 @@ void SwFldInputDlg::Apply()
 	rSh.EndAllAction();
 }
 
-
 IMPL_LINK(SwFldInputDlg, NextHdl, PushButton*, EMPTYARG)
 {
-	EndDialog(RET_OK);
+	//EndDialog(RET_OK);
+	//return 0;
+	Apply();
+	
+	String aStr;
+	SwFieldType* pFld = rSh.GetFldType( 0, RES_INPUTFLD );
+	if( pFld && rSh.MoveFldType( pFld, TRUE ))
+	{
+		rSh.ClearMark();
+		SwField* pField = rSh.GetCurFld();
+		if( pField && RES_INPUTFLD == pField->GetTyp()->Which() )
+    	{	// Es ist eine Eingabefeld
+    		//
+    		pInpFld = (SwInputField*)pField;
+    		aLabelED.SetText( pInpFld->GetPar2() );
+    		USHORT nSubType = pInpFld->GetSubType();
+    
+    		switch(nSubType & 0xff)
+    		{
+    			case INP_TXT:
+    				aStr = pInpFld->GetPar1();
+    				break;
+    
+    			case INP_USR:
+    				// Benutzerfeld
+    				if( 0 != ( pUsrType = (SwUserFieldType*)rSh.GetFldType(
+    							RES_USERFLD, pInpFld->GetPar1() ) ) )
+    					aStr = pUsrType->GetContent();
+    				break;
+    		}
+    		
+    		//move the dialog to just below the input field
+    		Point realPos = rSh.GetWin()->LogicToPixel( rSh.GetCrsrDocPos() );
+            long offY = rSh.GetWin()->GetOutOffYPixel();
+            long nWinPosY = realPos.Y() + offY - GetSizePixel().getHeight();
+            if (nWinPosY < 0)
+                nWinPosY = realPos.Y() + offY + GetSizePixel().getHeight()/2 - 14;
+            SetPosPixel( Point(realPos.X(), nWinPosY));
+    	}
+    	
+    	
+    	aEditED.SetText( aStr.ConvertLineEnd() );
+    	aOriStr = aStr;
+    	
+    	if( aStr.Len() )
+	    {
+		    Selection aNewSelection( 0, aStr.Len() );
+		    aEditED.SetSelection( aNewSelection );
+	    }
+	}
+	else
+	{
+	    rSh.ClearMark();
+		SwField* pField = rSh.GetCurFld();
+		if( pField && RES_INPUTFLD == pField->GetTyp()->Which() )
+    		pInpFld = (SwInputField*)pField;
+	}
+	aEditED.GrabFocus();
+	
+	return 0;
+}
+
+
+IMPL_LINK(SwFldInputDlg, PrevHdl, PushButton*, EMPTYARG)
+{
+	Apply();
+	
+	String aStr;
+	SwFieldType* pFld = rSh.GetFldType( 0, RES_INPUTFLD );
+	if( pFld && rSh.MoveFldType( pFld, FALSE ))
+	{
+		rSh.ClearMark();
+		SwField* pField = rSh.GetCurFld();
+		if( pField && RES_INPUTFLD == pField->GetTyp()->Which() )
+    	{	
+    		//
+    		pInpFld = (SwInputField*)pField;
+    		aLabelED.SetText( pInpFld->GetPar2() );
+    		USHORT nSubType = pInpFld->GetSubType();
+    
+    		switch(nSubType & 0xff)
+    		{
+    			case INP_TXT:
+    				aStr = pInpFld->GetPar1();
+    				break;
+    
+    			case INP_USR:
+    				// Benutzerfeld
+    				if( 0 != ( pUsrType = (SwUserFieldType*)rSh.GetFldType(
+    							RES_USERFLD, pInpFld->GetPar1() ) ) )
+    					aStr = pUsrType->GetContent();
+    				break;
+    		}
+    		
+    		//move the dialog to just below the input field
+    		Point realPos = rSh.GetWin()->LogicToPixel( rSh.GetCrsrDocPos() );
+            long offY = rSh.GetWin()->GetOutOffYPixel();
+            long nWinPosY = realPos.Y() + offY - GetSizePixel().getHeight();
+            if (nWinPosY < 0)
+                nWinPosY = realPos.Y() + offY + GetSizePixel().getHeight()/2 - 14;
+            SetPosPixel( Point(realPos.X(), nWinPosY));
+    	}
+    	 	
+    	aEditED.SetText( aStr.ConvertLineEnd() );
+    	aOriStr = aStr;
+    	
+    	if( aStr.Len() )
+	    {
+		    Selection aNewSelection( 0, aStr.Len() );
+		    aEditED.SetSelection( aNewSelection );
+	    }
+	}
+	else
+	{
+	    rSh.ClearMark();
+		SwField* pField = rSh.GetCurFld();
+		if( pField && RES_INPUTFLD == pField->GetTyp()->Which() )
+    		pInpFld = (SwInputField*)pField;
+	}
+	aEditED.GrabFocus();
+	
 	return 0;
 }
 
+IMPL_LINK(SwFldInputDlg, ModifyHdl, void*, EMPTYARG)
+{
+	Apply();
+	
+	rSh.ClearMark();
+	SwField* pField = rSh.GetCurFld();
+	if( pField && RES_INPUTFLD == pField->GetTyp()->Which() )
+    	pInpFld = (SwInputField*)pField;
+    		
+	return 0;
+}
 
+IMPL_LINK(SwFldInputDlg, CancelHdl, void*, EMPTYARG)
+{
+	aEditED.SetText( aOriStr );
+	
+	Apply();
+	
+	if ( IsInExecute() )
+        EndDialog( FALSE );
+    else
+    {
+        if ( GetStyle() & WB_CLOSEABLE )
+            Close();
+    }
+    		
+	return 0;
+}
\ No newline at end of file
diff -urNp sworig/source/ui/fldui/inpdlg.hrc sw/source/ui/fldui/inpdlg.hrc
--- sworig/source/ui/fldui/inpdlg.hrc	2005-09-09 15:44:26.000000000 +0800
+++ sw/source/ui/fldui/inpdlg.hrc	2006-07-17 12:10:38.000000000 +0800
@@ -40,3 +40,4 @@
 #define ED_LABEL			7
 #define PB_NEXT				8
 #define PB_HELP				9
+#define PB_PREVIOUS			10
diff -urNp sworig/source/ui/fldui/inpdlg.src sw/source/ui/fldui/inpdlg.src
--- sworig/source/ui/fldui/inpdlg.src	2005-09-09 15:44:44.000000000 +0800
+++ sw/source/ui/fldui/inpdlg.src	2006-08-23 20:46:48.000000000 +0800
@@ -42,7 +42,7 @@ ModalDialog DLG_FLD_INPUT
 	OutputSize = TRUE ;
 	Hide = TRUE ;
 	SVLook = TRUE ;
-	Size = MAP_APPFONT ( 194 , 119 ) ;
+	Size = MAP_APPFONT ( 194 , 77 ) ;
 	Text [ en-US ] = "Input Field" ;
 	Moveable = TRUE ;
 	/*    FixedText FT_LABEL
@@ -57,9 +57,9 @@ ModalDialog DLG_FLD_INPUT
 	Edit ED_LABEL
 	{
 		Border = TRUE ;
-		Pos = MAP_APPFONT ( 12 , 14 ) ;
+		Pos = MAP_APPFONT ( 12 , 12 ) ;
 		Size = MAP_APPFONT ( 115 , 12 ) ;
-		TabStop = TRUE ;
+		TabStop = FALSE ;
 		Left = TRUE ;
 		Text [ en-US ] = "Input" ;
 		Readonly = TRUE ;
@@ -69,8 +69,8 @@ ModalDialog DLG_FLD_INPUT
 	MultiLineEdit ED_EDIT
 	{
 		Border = TRUE ;
-		Pos = MAP_APPFONT ( 12 , 32 ) ;
-		Size = MAP_APPFONT ( 115 , 72 ) ;
+		Pos = MAP_APPFONT ( 12 , 28 ) ;
+		Size = MAP_APPFONT ( 115 , 24 ) ;
 		TabStop = TRUE ;
 		Left = TRUE ;
 	};
@@ -82,30 +82,302 @@ ModalDialog DLG_FLD_INPUT
         Size = MAP_APPFONT ( 127 , 8 ) ;
 		Text [ en-US ] = "Edit" ;
 	};
-	OKButton BT_OK
+	PushButton PB_PREVIOUS
 	{
-		Pos = MAP_APPFONT ( 139 , 6 ) ;
+		Pos = MAP_APPFONT ( 12 , 58 ) ;
 		Size = MAP_APPFONT ( 50 , 15 ) ;
 		TabStop = TRUE ;
-		DefButton = TRUE ;
+		Text [ en-US ] = "<< ~Previous" ;
+		Text [ de ] = "<< ~Vorhergehende" ;
+		Text [ be-BY ] = "<< Папярэдні" ;
+		Text [ bg ] = "<< Пр~едишен" ;
+		Text [ br ] = "<< ~Kent" ;
+		Text [ ca ] = "<< ~Anterior" ;
+		Text [ cs ] = "<< Předchozí" ;
+		Text [ cy ] = "<< ~Previous" ;
+		Text [ da ] = "<< ~Forrige" ;
+		Text [ el ] = "<< ~Προηγούμενο" ;
+		Text [ en-GB ] = "<< ~Previous" ;
+		Text [ eo ] = "<< ~Previous" ;
+		Text [ es ] = "<< ~Anterior" ;
+		Text [ et ] = "<< Eelmine" ;
+		Text [ fi ] = "<< ~Edellinen" ;
+		Text [ fr ] = "<< ~Précédente" ;
+		Text [ ga ] = "<< ~Roimhe Seo" ;
+		Text [ hu ] = "<< ~Előző" ;
+		Text [ it ] = "<< ~Precedente" ;
+		Text [ ja ] = "<< 前へ(~P)" ;
+		Text [ ka ] = "<< ~წინა" ;
+		Text [ km ] = "<< មុន " ;
+		Text [ ko ] = "<< 이전(~P)" ;
+		Text [ mk ] = "<< П~ретходен" ;
+		Text [ nb ] = "<< ~Forrige" ;
+		Text [ nl ] = "<< V~orige" ;
+		Text [ nn ] = "<< ~Førre" ;
+		Text [ pl ] = "<< ~Poprzedni" ;
+		Text [ pt ] = "<< ~Anterior" ;
+		Text [ pt-BR ] = "<< ~Anterior" ;
+		Text [ ru ] = "<< ~Previous" ;
+		Text [ sk ] = "<< ~Predchádzajúci" ;
+		Text [ sl ] = "<< ~Prejšnja" ;
+		Text [ sv ] = "<< ~Föregående" ;
+		Text [ tg ] = "<< ~Пешина" ;
+		Text [ tr ] = "<< ~Previous" ;
+		Text [ vi ] = "<< ~Lùi" ;
+		Text [ zh-CN ] = "<< 上一张(~P)" ;
+		Text [ zh-TW ] = "<< 上一頁(~P)" ;
+		Text [ x-comment ] = " ";
 	};
-	CancelButton BT_CANCEL
+	PushButton PB_NEXT
 	{
-		Pos = MAP_APPFONT ( 139 , 23 ) ;
+		Pos = MAP_APPFONT ( 78 , 58 ) ;
 		Size = MAP_APPFONT ( 50 , 15 ) ;
 		TabStop = TRUE ;
+		Text [ de ] = "~Weiter >>" ;
+		Text [ en-US ] = "~Next >>" ;
+		Text [ af ] = "~Volgende >>" ;
+		Text [ ar ] = "ال~تالي >>" ;
+		Text [ as-IN ] = "পৰৱর্তী>>" ;
+		Text [ be-BY ] = "Наперад >>" ;
+		Text [ bg ] = "На~пред >>" ;
+		Text [ br ] = "War-lerc'h >>" ;
+		Text [ bs ] = "~Dalje >>" ;
+		Text [ ca ] = "~Següent >>" ;
+		Text [ cs ] = "Další >>" ;
+		Text [ cy ] = "~Nesaf >>" ;
+		Text [ da ] = "~Næste >>" ;
+		Text [ el ] = "Επόμενο >>" ;
+		Text [ en-GB ] = "~Next >>" ;
+		Text [ en-ZA ] = "~Next >>" ;
+		Text [ eo ] = "~Next >>" ;
+		Text [ es ] = "~Siguiente >>" ;
+		Text [ et ] = "~Edasi >>" ;
+		Text [ fa ] = "~بعد >>" ;
+		Text [ fi ] = "~Seuraava >>" ;
+		Text [ fr ] = "Suivant >>" ;
+		Text [ ga ] = "Ar A~ghaidh >>" ;
+		Text [ gu ] = "આગળ(~N) >>" ;
+		Text [ gu-IN ] = "આગળ(~N) >>" ;
+		Text [ he ] = "הבא >>‏" ;
+		Text [ hi-IN ] = "आगे (~N)>>" ;
+		Text [ hr ] = "~Dalje >>" ;
+		Text [ hu ] = "~Tovább >>" ;
+		Text [ it ] = "~Avanti >>" ;
+		Text [ ja ] = "次へ(~N) >>" ;
+		Text [ ka ] = "~შემდეგი >>" ;
+		Text [ km ] = "បន្ទាប់​ >>" ;
+		Text [ ko ] = "다음(~N) >>" ;
+		Text [ ku ] = "~Pêş ve >>" ;
+		Text [ lt ] = "~Toliau >>" ;
+		Text [ mk ] = "~Следно >>" ;
+		Text [ ml-IN ] = "അടുത്ത" ;
+		Text [ mr-IN ] = "~ पुढचा >>" ;
+		Text [ nb ] = "~Neste >>" ;
+		Text [ ne ] = "पछिल्लो >>" ;
+		Text [ nl ] = "~Volgende >>" ;
+		Text [ nn ] = "~Neste >>" ;
+		Text [ nr ] = "~Okulandelako >>" ;
+		Text [ ns ] = "~Latelago >>" ;
+		Text [ or-IN ] = "ପରବର୍ତ୍ତୀ >>" ;
+		Text [ pa-IN ] = "ਅੱਗੇ(~N) >>" ;
+		Text [ pl ] = "~Dalej >>" ;
+		Text [ pt ] = "Se~guinte >>" ;
+		Text [ pt-BR ] = "~Avançar >>" ;
+		Text [ ru ] = "Далее >>" ;
+		Text [ rw ] = "Komeza>>" ;
+		Text [ sh-YU ] = "~Napred >>" ;
+		Text [ sk ] = "Ď~alej >>" ;
+		Text [ sl ] = "~Naprej >>" ;
+		Text [ sr-CS ] = "~Напред >>" ;
+		Text [ ss ] = "~Lokulandzelako >>" ;
+		Text [ st ] = "~Hlahlamang >>" ;
+		Text [ sv ] = "~Nästa >>" ;
+		Text [ sw-TZ ] = "Ifuatayo >>" ;
+		Text [ ta ] = "~அடுத்தது >>" ;
+		Text [ ta-IN ] = "~அடுத்தது >>" ;
+		Text [ te-IN ] = "~తర్వాత>>" ;
+		Text [ tg ] = "Давом >>" ;
+		Text [ th ] = "~ถัดไป >>" ;
+		Text [ tn ] = "~Latelang >>" ;
+		Text [ tr ] = "~Sonraki >>" ;
+		Text [ ts ] = "~Landzelaka >>" ;
+		Text [ uk ] = "Далі >>" ;
+		Text [ ur-IN ] = "اگلا >>" ;
+		Text [ ve ] = "~Phanḓa >>" ;
+		Text [ vi ] = "~Kế >>" ;
+		Text [ xh ] = "~Elandelayo >>" ;
+		Text [ zh-CN ] = "继续(~N) >>" ;
+		Text [ zh-TW ] = "繼續(~N)" ;
+		Text [ zu ] = "~Okulandelayo >>" ;
+		Text [ x-comment ] = " ";
+		DefButton = TRUE ;
 	};
-	PushButton PB_NEXT
+	OKButton BT_OK
 	{
-		Pos = MAP_APPFONT ( 139 , 40 ) ;
+		Pos = MAP_APPFONT ( 139 , 6 ) ;
 		Size = MAP_APPFONT ( 50 , 15 ) ;
 		TabStop = TRUE ;
-		Hide = TRUE ;
-		Text [ en-US ] = "~Next" ;
+		Text [ en-US ] = "~OK" ;
+		Text [ de ] = "~OK";
+		Text [ af ] = "~OK" ;
+		Text [ ar ] = "~موافق" ;
+		Text [ as-IN ] = "OK" ;
+		Text [ be-BY ] = "OK" ;
+		Text [ bg ] = "~OK" ;
+		Text [ br ] = "Mat e~o" ;
+		Text [ bs ] = "~U redu" ;
+		Text [ ca ] = "~D'acord" ;
+		Text [ cs ] = "OK" ;
+		Text [ cy ] = "~Iawn" ;
+		Text [ da ] = "~OK" ;
+		Text [ el ] = "~OK" ;
+		Text [ en-GB ] = "~OK" ;
+		Text [ en-ZA ] = "~OK" ;
+		Text [ eo ] = "Akcepti" ;
+		Text [ es ] = "~Aceptar" ;
+		Text [ et ] = "~Sobib" ;
+		Text [ fi ] = "~OK" ;
+		Text [ fr ] = "~OK" ;
+		Text [ ga ] = "~OK" ;
+		Text [ gu ] = "બરાબર" ;
+		Text [ gu-IN ] = "બરાબર" ;
+		Text [ he ] = "אישור" ;
+		Text [ hi-IN ] = "ठीक (~O)" ;
+		Text [ hr ] = "~U redu" ;
+		Text [ hu ] = "~OK" ;
+		Text [ it ] = "O~K" ;
+		Text [ ja ] = "~OK" ;
+		Text [ ka ] = "~კარგი" ;
+		Text [ km ] = "យល់ព្រម " ;
+		Text [ ko ] = "확인(~O)" ;
+		Text [ lt ] = "~Gerai" ;
+		Text [ mk ] = "~Во ред" ;
+		Text [ ml-IN ] = "ശരി" ;
+		Text [ mr-IN ] = "~ठिक" ;
+		Text [ nb ] = "~OK" ;
+		Text [ ne ] = "ठीक छ" ;
+		Text [ nl ] = "~OK" ;
+		Text [ nn ] = "~OK" ;
+		Text [ nr ] = "~Kulungile" ;
+		Text [ ns ] = "~Go lokile" ;
+		Text [ or-IN ] = "OK" ;
+		Text [ pa-IN ] = "ਠੀਕ ਹੈ(~o)" ;
+		Text [ pl ] = "~OK" ;
+		Text [ pt ] = "~OK" ;
+		Text [ pt-BR ] = "~OK" ;
+		Text [ ru ] = "Да" ;
+		Text [ rw ] = "Yego" ;
+		Text [ sh-YU ] = "~U redu" ;
+		Text [ sk ] = "~OK" ;
+		Text [ sl ] = "~V redu" ;
+		Text [ sr-CS ] = "~У реду" ;
+		Text [ ss ] = "~OK" ;
+		Text [ st ] = "~Lokile" ;
+		Text [ sv ] = "~OK" ;
+		Text [ sw-TZ ] = "SAWA" ;
+		Text [ ta ] = "~சரி" ;
+		Text [ ta-IN ] = "~சரி" ;
+		Text [ te-IN ] = "ఓకె" ;
+		Text [ tg ] = "ОК" ;
+		Text [ th ] = "~ตกลง" ;
+		Text [ ti-ER ] = "ሕራይ" ;
+		Text [ tn ] = "~OK" ;
+		Text [ tr ] = "~Tamam" ;
+		Text [ ts ] = "~Swi Lunghile" ;
+		Text [ uk ] = "Так" ;
+		Text [ ur-IN ] = "ٹھیک ہے" ;
+		Text [ ve ] = "~Zwo Luga" ;
+		Text [ vi ] = "Đượ~c" ;
+		Text [ xh ] = "~Kulungile" ;
+		Text [ zh-CN ] = "确定(~O)" ;
+		Text [ zh-TW ] = "確定(~O)" ;
+		Text [ zu ] = "~Kulungile" ;
+		//DefButton = TRUE ;
 	};
+	CancelButton BT_CANCEL
+	{
+		Pos = MAP_APPFONT ( 139 , 23 ) ;
+		Size = MAP_APPFONT ( 50 , 15 ) ;
+		TabStop = TRUE ;
+		Text [ en-US ] = "~Cancel" ;
+		Text [ de ] = "~Abbruch";
+		Text [ af ] = "~Kanselleer" ;
+		Text [ ar ] = "إل~غاء" ;
+		Text [ as-IN ] = "বাতিল কৰক" ;
+		Text [ be-BY ] = "Нічога" ;
+		Text [ bg ] = "~Отказ" ;
+		Text [ br ] = "Nullañ" ;
+		Text [ bs ] = "~Odustani" ;
+		Text [ ca ] = "~Cancel·la" ;
+		Text [ cs ] = "Zrušit" ;
+		Text [ cy ] = "~Diddymu" ;
+		Text [ da ] = "~Annuller" ;
+		Text [ el ] = "Α~κύρωση" ;
+		Text [ en-GB ] = "~Cancel" ;
+		Text [ en-ZA ] = "~Cancel" ;
+		Text [ eo ] = "~Cancel" ;
+		Text [ es ] = "~Cancelar" ;
+		Text [ et ] = "Loobu" ;
+		Text [ fa ] = "ان~صراف" ;
+		Text [ fi ] = "~Peruuta" ;
+		Text [ fr ] = "Annuler" ;
+		Text [ ga ] = "~Cealaigh" ;
+		Text [ gu ] = "રદ કરો (~C)" ;
+		Text [ gu-IN ] = "રદ કરો (~C)" ;
+		Text [ he ] = "ביטול" ;
+		Text [ hi-IN ] = "रद्द करें (~C)" ;
+		Text [ hr ] = "~Odustani" ;
+		Text [ hu ] = "~Mégsem" ;
+		Text [ it ] = "~Annulla" ;
+		Text [ ja ] = "キャンセル(~C)" ;
+		Text [ ka ] = "~გაუქმება" ;
+		Text [ km ] = "បោះបង់" ;
+		Text [ ko ] = "취소(~C)" ;
+		Text [ ku ] = "~Betal" ;
+		Text [ lt ] = "~Atsisakyti" ;
+		Text [ mk ] = "~Откажи" ;
+		Text [ mr-IN ] = "~रद्द करा" ;
+		Text [ nb ] = "~Avbryt" ;
+		Text [ ne ] = "रद्द गर्नुहोस्" ;
+		Text [ nl ] = "~Annuleren" ;
+		Text [ nn ] = "~Avbryt" ;
+		Text [ nr ] = "~Sula" ;
+		Text [ ns ] = "~Khansela" ;
+		Text [ or-IN ] = "ରଦ୍ଦ କର" ;
+		Text [ pa-IN ] = "ਰੱਦ ਕਰੋ(~C)" ;
+		Text [ pl ] = "~Anuluj" ;
+		Text [ pt ] = "~Cancelar" ;
+		Text [ pt-BR ] = "~Cancel" ;
+		Text [ ru ] = "Отменить" ;
+		Text [ rw ] = "Kureka" ;
+		Text [ sh-YU ] = "~Odustani" ;
+		Text [ sk ] = "~Zrušiť" ;
+		Text [ sl ] = "Pre~kliči" ;
+		Text [ sr-CS ] = "~Одустани" ;
+		Text [ ss ] = "~Yesula" ;
+		Text [ st ] = "~Timetsa" ;
+		Text [ sv ] = "~Cancel" ;
+		Text [ sw-TZ ] = "Ghairi" ;
+		Text [ ta ] = "ரத்து" ;
+		Text [ ta-IN ] = "ரத்து" ;
+		Text [ te-IN ] = "రద్దు" ;
+		Text [ tg ] = "~Бекоркунӣ" ;
+		Text [ th ] = "~ยกเลิก" ;
+		Text [ ti-ER ] = "ኣቋርጽ" ;
+		Text [ tr ] = "İ~ptal" ;
+		Text [ ts ] = "~Tshika" ;
+		Text [ uk ] = "Скасувати" ;
+		Text [ ur-IN ] = "منسوخ" ;
+		Text [ ve ] = "~Khantsela" ;
+		Text [ vi ] = "T~hôi" ;
+		Text [ xh ] = "~Rhoxisa" ;
+		Text [ zh-CN ] = "~Cancel" ;
+		Text [ zh-TW ] = "~Cancel" ;
+		Text [ zu ] = "~Nqamula" ;
+	};	
 	HelpButton PB_HELP
 	{
-		Pos = MAP_APPFONT ( 139 , 60 ) ;
+		Pos = MAP_APPFONT ( 139 , 40 ) ;
 		Size = MAP_APPFONT ( 50 , 15 ) ;
 		TabStop = TRUE ;
 	};
diff -urNp sworig/source/ui/inc/inpdlg.hxx sw/source/ui/inc/inpdlg.hxx
--- sworig/source/ui/inc/inpdlg.hxx	2005-09-09 17:21:04.000000000 +0800
+++ sw/source/ui/inc/inpdlg.hxx	2006-08-15 10:13:44.000000000 +0800
@@ -76,12 +76,17 @@ class SwFldInputDlg: public SvxStandardD
 	OKButton  			aOKBT;
 	CancelButton 		aCancelBT;
 	PushButton			aNextBT;
+	PushButton			aPreviousBT;
 	HelpButton			aHelpBT;
+	String              aOriStr;
 
 	DECL_LINK(NextHdl, PushButton*);
+	DECL_LINK(PrevHdl, PushButton*);
+	DECL_LINK(ModifyHdl, void*);
+	DECL_LINK(CancelHdl, void*);
 public:
 	SwFldInputDlg( 	Window *pParent, SwWrtShell &rSh,
-					SwField* pField, BOOL bNextButton = FALSE );
+					SwField* pField, BOOL bNextButton = TRUE );
 	~SwFldInputDlg();
 };
 
