403Webshell
Server IP : 216.92.14.13  /  Your IP : 216.73.216.171
Web Server : Apache
System : Linux vps4089.pairvps.com 5.15.0-190-generic #200-Ubuntu SMP Fri Aug 7 15:06:04 UTC 2026 x86_64
User : rmlac2fmr ( 1040637)
PHP Version : 8.2.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/home/rmlac2fmr/public_html/Merchant2/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/home/rmlac2fmr/public_html/Merchant2/upgrade.mv
<HTML><MIVA STANDARDOUTPUTLEVEL = "text, html, compresswhitespace" ERROROUTPUTLEVEL = "syntax, expression, runtime">

<IF version LT 3.91>
	<HEAD><TITLE>Miva Engine Version Mismatch</TITLE></HEAD>
	<BODY BGCOLOR = "#ffffff">
	<FONT FACE = "Arial, Helvetica" SIZE = "-1">
	Miva Merchant requires the Miva Engine, version <B>3.91</B> or higher.<BR>
	You are running version <B><EVAL version></B><BR>
	<BR>
	Please contact <A HREF = "http://www.miva.com">Miva Corporation</A> for upgrade information.
	</FONT>
	</BODY>

	<EXIT>
</IF>

<MvCOMMENT>
|
| Miva Merchant v4.x
|
| This file and the source codes contained herein are the property 
| of Miva Corporation.  Use of this file is restricted to the specific 
| terms and conditions in the License Agreement associated with this 
| file.  Distribution of this file or portions of this file for uses
| not covered by the License Agreement is not allowed without a written 
| agreement signed by an officer of Miva Corporation.
| 
| Copyright 1998-2000 Miva Corporation.  All rights reserved.
| http://www.miva.com/
|
| Miva Merchant Upgrade
| $Source: /home/cvs/merchant/Merchant/upgrade.mv,v $
|
| Prefix         : MER-UPG-
| Next Error Code: 18   
| Next Text ID   : 153  
|
</MvCOMMENT>

<MvASSIGN NAME = "l.ok" VALUE = "1">
<MvASSIGN NAME = "g.sessionurl" VALUE = "{ s.documenturl }">
<MvDO FILE = "4.00/lib/config.mv">
<MvASSIGN NAME = "g.Upgrade_Filename_Admin" VALUE = "{ g.Version_Path $ g.Filename_Admin }">
<MvASSIGN NAME = "g.Upgrade_Library_Utilities" VALUE = "{ g.Version_Path $ g.Library_Utilities }">
<MvASSIGN NAME = "g.Upgrade_Library_DB" VALUE = "{ g.Version_Path $ g.Library_DB }">

<MvIF EXPR = "{ NOT fexists( g.MerchantPath $ 'domain.dbf' ) }">
	<MvLOCALIZED NAME = "l.error" ID = "#Error#">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Miva Merchant has not been initialized. Please use the Miva Merchant Setup script to initialize the required data files.</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Miva Merchant wurde nicht initialisiert. Bitte benutzten Sie das Miva Merchant Setup-Skript, um die erforderlichen Datendateien zu initialisieren.</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00001', l.error ) }">

<MvELSE>
	<MvOPEN NAME = "Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">

	<MvIF EXPR = "{ MvOPEN_Error }">
		<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00133">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Miva Merchant has not been initialized. Please use the Miva Merchant Setup script to initialize the required data files.</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Miva Merchant wurde nicht initialisiert. Bitte benutzten Sie das Miva Merchant Setup-Skript, um die erforderlichen Datendateien zu initialisieren.</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00001', l.error ) }">
	<MvELSE>
		<MvIF EXPR = "{ 'https://' IN g.sessionurl }">
			<MvASSIGN NAME = "g.Secure" VALUE = 1>
		<MvELSE>
			<MvASSIGN NAME = "g.Secure" VALUE = 0>
		</MvIF>

		<MvIF EXPR = "{ g.Secure }">
			<MvASSIGN NAME = "g.Module_Root_Versionless" VALUE = "{ Domain.d.mod_sroot }">
		<MvELSE>
			<MvASSIGN NAME = "g.Module_Root_Versionless" VALUE = "{ Domain.d.mod_root }">
		</MvIF>

		<MvIF EXPR = "{ Upgrade_Numeric_Version( Domain.d.version ) LT '4.00' }">
			<MvASSIGN NAME = "g.Old_Module_Root" VALUE = "{ g.Module_Root_Versionless }">
		<MvELSE>
			<MvASSIGN NAME = "g.Old_Module_Root" VALUE = "{ g.Module_Root_Versionless $ Upgrade_Numeric_Version( Domain.d.version ) $ '/' }">
		</MvIF>

		<MvASSIGN NAME = "g.Module_Root" VALUE = "{ g.Module_Root_Versionless $ g.Version_Path }">

		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ SetPaths() }">

		<HEAD>
		<META HTTP-EQUIV = "pragma" CONTENT = "no-cache">
		<TITLE>
		<MvLOCALIZED ID = "MER-UPG-00134">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Miva Merchant Upgrade</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Miva Merchant-Upgrade</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		</TITLE>
		</HEAD>

		<MvEVAL EXPR = "{ Upgrade_Wizard_SetSteps() }">

		<MvIF EXPR = "{ NOT len( g.Upgrade_ISP_Defaults ) }">
			<MvEVAL EXPR = "{ Upgrade_Load_ISP_Defaults() }">
		</MvIF>

		<MvIF EXPR = "{ NOT g.Step }">
			<MvASSIGN NAME = "l.pos" VALUE = "{ Upgrade_Get_Next_Step() }">
			<MvASSIGN NAME = "g.Step" VALUE = "{ int( l.pos:step ) }">
		</MvIF>

		<MvIF EXPR = "{ g.Step GT g.Step_Wizard_Finish }">
			<MvASSIGN NAME = "g.Action" VALUE = "UPGD">
		</MvIF>

		<MvIF EXPR = "{ len( g.Screen ) EQ 0 }">
			<MvASSIGN NAME = "g.Screen" VALUE = "WIZZ">
		</MvIF>

		<MvIF EXPR = "{ ( Upgrade_Numeric_Version( Domain.d.version ) GE g.Merchant_Version ) AND ( g.Screen EQ 'WIZZ' ) }">
			<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00135">
				<MvLOCALIZED-TOKEN NAME = "merc-vers" VALUE = "{ encodeentities( Upgrade_Numeric_Version( Domain.d.version ) ) }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Miva Merchant has already been upgraded to version <B>%merc-vers%</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Miva Merchant wurde bereits mit Version <B>%merc-vers%</B> aktualisiert</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
			<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00002', l.error ) }">
		<MvELSE>
			<MvCLOSE NAME = "Domain">

			<MvIF EXPR = "{ l.ok }">
				<MvIF EXPR = "{ g.Action EQ 'UPGD' }">
					<MvASSIGN NAME = "l.ok" VALUE = "{ Action_Upgrade() }">
				</MvIF>
				<MvIF EXPR = "{ g.action EQ 'FUPL' }">
					<MvASSIGN NAME = "l.ok" VALUE = "{ Action_FileUpload() }">
				</MvIF>

			</MvIF>

			<MvIF EXPR = "{ l.ok }">
				<MvIF EXPR = "{ g.Data_Entry_Error OR g.Have_Fields }">
					<MvASSIGN NAME = "g.Load_Fields" VALUE = 0>
				<MvELSE>
					<MvASSIGN NAME = "g.Load_Fields" VALUE = 1>
				</MvIF>

				<MvIF EXPR = "{ g.Screen EQ 'WIZZ' }">
					<MvASSIGN NAME = "l.ok" VALUE = "{ Screen_Upgrade_Wizard() }">
				</MvIF>

				<MvIF EXPR = "{ g.Screen EQ 'UPGD' }">
					<MvASSIGN NAME = "l.ok" VALUE = "{ Screen_Upgrade() }">
				</MvIF>

				<MvIF EXPR = "{ g.Screen EQ 'FINI' }">
					<MvASSIGN NAME = "l.ok" VALUE = "{ Screen_Upgrade_Finished() }">
				</MvIF>

				<MvIF EXPR = "{ g.Screen EQ 'FUPL' }">
					<MvASSIGN NAME = "l.ok" VALUE = "{ Screen_FileUpload() }">
				</MvIF>
			</MvIF>
		</MvIF>
	</MvIF>
</MvIF>

<MvIF EXPR = "{ NOT l.ok }">
	<MvIF EXPR = "{ len( g.Error_Message ) EQ 0 }">
		<MvLOCALIZED NAME = "l.error" ID = "MER-SET-00004">
			<MvLOCALIZED-TOKEN NAME = "action" VALUE = "{ encodeentities( g.Action ) }">
			<MvLOCALIZED-TOKEN NAME = "screen" VALUE = "{ encodeentities( g.Screen ) }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">
				<B>Unknown Error</B><BR><BR>&nbsp;&nbsp;Action = %action%<BR>&nbsp;&nbsp;Screen = %screen%
			</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
				<B>Unbekannter Fehler</B><BR><BR>&nbsp;&nbsp;Ausf�hrung = %action%<BR>&nbsp;&nbsp;Bildschirm = %screen%
			</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00001', l.error ) }">
	</MvIF>

	<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Screen_Error() }">
</MvIF>

</HTML>
<MvEXIT>



<MvCOMMENT>
| 
| *************************************************************************************************
| Upgrade Wizard Steps
| *************************************************************************************************
|
</MvCOMMENT>

<MvFUNCTION NAME = "InitializeStateArray"  STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.count" VALUE = 1>

	<MvIF EXPR = "{ sfcopy( g.Version_Path $ 'STATES.lst', 'STATES.lst' ) }">
		<MIVA MvIMPORT_Error = "nonfatal, nodisplay">
		<MvIMPORT FILE = "STATES.lst"
				  FIELDS = "l.name, l.code"
				  DELIMITER = "|">
			<MvASSIGN NAME = "g.State" INDEX = "{ l.count }" MEMBER = "Name" VALUE = "{ l.name }">
			<MvASSIGN NAME = "g.State" INDEX = "{ l.count }" MEMBER = "Code" VALUE = "{ l.code }">
			<MvASSIGN NAME = "l.count" VALUE = "{ l.count + 1 }">
		</MvIMPORT>

		<MvIF EXPR = "{ MvIMPORT_Error }">
			<MvDO FILE = "{ g.Module_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-SET-00001', MvIMPORT_Error ) }">
		</MvIF>
		
		<MvASSIGN NAME = "l.deleted" VALUE = "{ fdelete( 'STATES.lst' ) }">
	</MvIF>

	<MvASSIGN NAME = "g.State_Count" VALUE = "{ l.count }">
</MvFUNCTION>

<MvFUNCTION NAME = "InitializeCountryArray" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.count" VALUE = 1>
	<MvASSIGN NAME = "l.country_file" VALUE = "{ 'COUNTRIES.' $ s.miva_language }">
	
	<MvIF EXPR = "{ sfcopy( g.Version_Path $ l.country_file, l.country_file ) }">
		<MIVA MvIMPORT_Error = "nonfatal, nodisplay">
		<MvIMPORT FILE = "{ l.country_file }"
				  FIELDS = "l.name, l.code, l.num"
				  DELIMITER = "|">
			<MvASSIGN NAME = "g.Country" INDEX = "{ l.count }" MEMBER = "Name" VALUE = "{ l.name }">
			<MvASSIGN NAME = "g.Country" INDEX = "{ l.count }" MEMBER = "Alpha" VALUE = "{ l.code }">
			<MvASSIGN NAME = "g.Country" INDEX = "{ l.count }" MEMBER = "Numeric" VALUE = "{ l.num }">

			<MvASSIGN NAME = "l.count" VALUE = "{ l.count + 1 }">
		</MvIMPORT>

		<MvIF EXPR = "{ MvIMPORT_Error }">
			<MvDO FILE = "{ g.Module_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-SET-00004', MvIMPORT_Error ) }">
		</MvIF>
		
		<MvASSIGN NAME = "l.deleted" VALUE = "{ fdelete( l.country_file ) }">
	</MvIF>

	<MvASSIGN NAME = "g.Country_Count" VALUE = "{ l.count }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_FieldError" PARAMETERS = "step, field, message" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "g.Step" VALUE = "{ l.step }">
	<MvASSIGN NAME = "g.Error_Field" VALUE = "{ l.field }">
	<MvASSIGN NAME = "g.Error_Field_Message" VALUE = "{ l.message }">
	<MvASSIGN NAME = "g.Data_Entry_Error" VALUE = 1>

	<MvFUNCTIONRETURN VALUE = 0>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_FieldError" PARAMETERS = "step, store_pos, field, message" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "g.Step" VALUE = "{ l.step }">
	<MvASSIGN NAME = "g.Error_Field" VALUE = "{ l.field }">
	<MvASSIGN NAME = "g.Error_Field_Message" VALUE = "{ l.message }">
	<MvASSIGN NAME = "g.Error_Store_Pos" VALUE = "{ l.store_pos }">
	<MvASSIGN NAME = "g.Data_Entry_Error" VALUE = 1>
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.store_pos }" MEMBER = "Valid" VALUE = "">

	<MvFUNCTIONRETURN VALUE = 0>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Button_Next" PARAMETERS = "" STANDARDOUTPUTLEVEL = "text,html,compresswhitespace">
	<MvASSIGN NAME = "l.new_step" VALUE = "{ Upgrade_Get_Next_Step() }">
	<MvIF EXPR = "{ l.new_step:step LT 1 }">
		&nbsp;
	<MvELSE>
		<MvIF EXPR = "{ l.new_step:step GT g.Step_Wizard_Finish }">
			<MvLOCALIZED NAME = "l.text" ID = "MER-UPG-00038">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upgrade</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Upgrade</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
			<MvASSIGN NAME = "l.onclick" VALUE = "Upgrade_Finish();">
		<MvELSE>
			<MvLOCALIZED NAME = "l.text" ID = "MER-UPG-00037">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Next</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Weiter</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
			<MvASSIGN NAME = "l.onclick" VALUE = "{ 'Upgrade_Goto( ' $ l.new_step:step $ ', ' $ l.new_step:store $ ', ' $ l.new_step:module $ ' )' }">
		</MvIF>

		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "button" VALUE = "{ l.text }" ONCLICK = "{ l.onclick }">
		</FONT>
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Button_Previous" PARAMETERS = "" STANDARDOUTPUTLEVEL = "text,html,compresswhitespace">
	<MvASSIGN NAME = "l.new_step" VALUE = "{ Upgrade_Get_Previous_Step() }">
	<MvIF EXPR = "{ l.new_step:step LT 1 }">
		&nbsp;
	<MvELSE>
		<MvLOCALIZED NAME = "l.text" ID = "MER-SET-00134">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Previous</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Zur�ck</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		<MvASSIGN NAME = "l.onclick" VALUE = "{ 'Upgrade_Goto( ' $ l.new_step:step $ ', ' $ l.new_step:store $ ', ' $ l.new_step:module $ ' )' }">

		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "button" VALUE = "{ l.text }" ONCLICK = "{ l.onclick }">
		</FONT>
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Button_Upgrade" PARAMETERS = "onclick" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvLOCALIZED NAME = "l.text" ID = "MER-UPG-00038">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upgrade</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Upgrade</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<FONT FACE = "Arial, Helvetica" SIZE = "-1">
	<MvEVAL EXPR = "{ '<INPUT TYPE = "button" VALUE = "' $ l.text $ '" ONCLICK = "' $ l.onclick $ '">' }">
	</FONT>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_BeginScreen" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<HEAD>
	<META HTTP-EQUIV = "pragma" CONTENT = "no-cache">

	<TITLE>
	<MvLOCALIZED ID = "MER-SET-00132">
		<MvLOCALIZED-TOKEN NAME = "merc-vers" VALUE = "{ encodeentities( g.Merchant_Version ) }">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Miva Merchant v%merc-vers% Setup</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Miva Merchant v%merc-vers% Setup</MvLOCALIZED-TEXT>
	</MvLOCALIZED>									
	</TITLE>
	<MvASSIGN NAME = "g.baseurl" VALUE = "{ Domain.d.base_url }">
	<MvIF EXPR = "{ Domain.d.base_surl }">
		<MvASSIGN NAME = "g.secure_baseurl" VALUE = "{ Domain.d.base_surl }">
	<MvELSE>
		<MvASSIGN NAME = "g.secure_baseurl" VALUE = "{ g.baseurl }">
	</MvIF>

	<MvIF EXPR = "{ g.Secure }">
		<BASE HREF = "{ g.secure_baseurl }">
	<MvELSE>
		<BASE HREF = "{ g.baseurl }">
	</MvIF>
	
	<MvDO FILE = "{ g.Module_Admin }" NAME = "l.javascript" VALUE = "{ JavaScript_SetVariables( 'g', 'Screen' ) }">
	<MvEVAL EXPR = "{ l.javascript }">

<SCRIPT LANGUAGE = "JavaScript">
<!--
function FieldError( field, message )
{
	if ( field.length )
	{
		document.forms[ Screen ].elements[ field ].select();
		document.forms[ Screen ].elements[ field ].focus();
	}

	alert( message );
}

function Upgrade_Next()
{
	document.forms[ Screen ].elements[ 'New_Step' ].value = parseInt( document.forms[ Screen ].elements[ 'Step' ].value ) + 1;
	document.forms[ Screen ].submit();	
}

function Upgrade_Previous()
{
	document.forms[ Screen ].elements[ 'New_Step' ].value = parseInt( document.forms[ Screen ].elements[ 'Step' ].value ) - 1;
	document.forms[ Screen ].submit();	
}

function Upgrade_Finish()
{
	document.forms[ Screen ].elements[ 'New_Step' ].value = 0;
	document.forms[ Screen ].elements[ 'Action' ].value = 'UPGD';
	document.forms[ Screen ].submit();	
}

function Upgrade_Goto( step, store, module )
{
	document.forms[ Screen ].elements[ 'New_Step' ].value = step;
	document.forms[ Screen ].elements[ 'Upgrade_Store_New_Pos' ].value = store;
	document.forms[ Screen ].elements[ 'Upgrade_Module_New_Pos' ].value = module;
	document.forms[ Screen ].submit();	
}
//-->
</SCRIPT>
	</HEAD>

	<MvIF EXPR = "{ len( g.Error_Field ) OR ( len( g.Error_Field_Message ) ) }">
		<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.error_field" VALUE = "{ JavaScriptEncode( g.Error_Field ) }">
		<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.error_field_message" VALUE = "{ JavaScriptEncode( g.Error_Field_Message ) }">
		<MvIF EXPR = "{ len( g.Error_Store_Pos ) }">
			<MvASSIGN NAME = "g.Upgrade_Store_Pos" VALUE = "{ g.Error_Store_Pos }">
		</MvIF>

		<BODY BGCOLOR = "#ffffff" BACKGROUND = "{ 'graphics/' $ s.miva_language $ '/wizards/blade_bg.gif' }" ONLOAD = "{ 'FieldError( \'' $ l.error_field $ '\', \'' $ l.error_field_message $ '\' );' }">
	<MvELSE>
		<BODY BGCOLOR = "#ffffff" BACKGROUND = "{ 'graphics/' $ s.miva_language $ '/wizards/blade_bg.gif' }">
	</MvIF>
	
	
	<FORM NAME = "{ encodeentities( g.Screen ) }" METHOD = "POST" ACTION = "{ encodeentities( g.sessionurl ) }">
	<INPUT TYPE = "hidden" NAME = "Screen" VALUE = "{ encodeentities( g.Screen ) }">
	<INPUT TYPE = "hidden" NAME = "Action" VALUE = "">
	<INPUT TYPE = "hidden" NAME = "Step" VALUE = "{ encodeentities( g.Step ) }">
	<INPUT TYPE = "hidden" NAME = "New_Step" VALUE = "{ encodeentities( g.Step ) }">
	<INPUT TYPE = "hidden" NAME = "Have_Fields" VALUE = "1">

	<TABLE BORDER = 0 CELLPADDING = 2 CELLSPACING = 0 WIDTH = "100%">

	<MvLOCALIZED NAME = "l.restart_text" ID = "MER-SET-00139">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Restart</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Neu starten</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvLOCALIZED NAME = "l.close_text" ID = "MER-SET-00140">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Close</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Schlie�en</MvLOCALIZED-TEXT>
	</MvLOCALIZED>
	
	<MvLOCALIZED NAME = "l.upgrade_text" ID = "MER-UPG-00141">
		<MvLOCALIZED-TOKEN NAME = "version" VALUE = "{ g.Merchant_Version }">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Miva Merchant v%version% Upgrade</MvLOCALIZED-TEXT>
	</MvLOCALIZED>
	
	<TR><TD ALIGN = "left" VALIGN = "top">
		<IMG BORDER = 0 ALT = "{ l.upgrade_text }" SRC = "{ 'graphics/' $ s.miva_language $ '/wizards/upgrade_sm4x.gif' }">
	</TD><TD ALIGN = "right" VALIGN = "top" NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<A HREF = "{ g.sessionurl }"><IMG SRC = "{ 'graphics/' $ s.miva_language $ '/wizards/restart.gif' }" BORDER = 0 ALT = "{ encodeentities( l.restart_text ) }"></A><A HREF = "#" ONCLICK = "window.close(); return false;"><IMG SRC = "{ 'graphics/' $ s.miva_language $ '/wizards/close.gif' }" BORDER = 0 ALT = "{ encodeentities( l.close_text ) }"></A>
		</FONT>
	</TD></TR>

	<TR><TD ALIGN = "left" VALIGN = "top" COLSPAN = 2>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_EndScreen" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	</TD></TR>
	</TABLE>
	</FORM>
	</BODY>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Wizard_SetSteps"  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "g.Step_Wizard_Welcome"				VALUE = 1>
	<MvASSIGN NAME = "g.Step_Wizard_LoginPassword"			VALUE = 2>
	<MvASSIGN NAME = "g.Step_Wizard_DomainLicense"			VALUE = 3>
	<MvASSIGN NAME = "g.Step_Wizard_DomainRegistration"		VALUE = 4>
	<MvASSIGN NAME = "g.Step_Wizard_StoreLicense"			VALUE = 5>
	<MvASSIGN NAME = "g.Step_Wizard_StoreRegistration"		VALUE = 6>
	<MvASSIGN NAME = "g.Step_Wizard_ModuleVersionCheck"		VALUE = 7>
	<MvASSIGN NAME = "g.Step_Wizard_Finish"					VALUE = 8>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Get_Next_Step" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.pos" MEMBER = "step" VALUE = "{ int( g.Step ) }">
	<MvASSIGN NAME = "l.pos" MEMBER = "store" VALUE = "{ int( g.Upgrade_Store_Pos ) }">
	<MvASSIGN NAME = "l.pos" MEMBER = "module" VALUE = "{ int( g.Upgrade_Module_Pos ) }">
	<MvASSIGN NAME = "l.step_found" VALUE = "0">
	
	<MvWHILE EXPR = "{ (NOT l.step_found) AND (l.pos:step LE g.Step_Wizard_Finish) }">
		<MvIF EXPR = "{ ( l.pos:step EQ g.Step_Wizard_StoreRegistration ) AND (l.pos:store LT g.Upgrade_Store_Count ) }">
			<MvASSIGN NAME = "l.pos" MEMBER = "step" VALUE = "{ g.Step_Wizard_StoreLicense }">
			<MvASSIGN NAME = "l.pos" MEMBER = "store" VALUE = "{ l.pos:store + 1 }">
		<MvELSE>
			<MvIF EXPR = "{ ( l.pos:step EQ g.Step_Wizard_ModuleVersionCheck ) AND (l.pos:module LT g.Upgrade_Module_Count ) }">
				<MvASSIGN NAME = "l.pos" MEMBER = "module" VALUE = "{ l.pos:module + 1 }">
			<MvELSE>
				<MvASSIGN NAME = "l.pos" MEMBER = "step" VALUE = "{ l.pos:step + 1 }">
				<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_StoreLicense }">
					<MvASSIGN NAME = "l.pos" MEMBER = "store" VALUE = "1">
				<MvELSE>
					<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_ModuleVersionCheck }">
						<MvASSIGN NAME = "l.pos" MEMBER = "module" VALUE = "1">
					</MvIF>
				</MvIF>
			</MvIF>		
		</MvIF>
		<MvASSIGN NAME = "l.step_found" VALUE = "{ Upgrade_Check_Step( l.pos ) }">
	</MvWHILE>
	
	<MvFUNCTIONRETURN VALUE = "{ l.pos }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Get_Previous_Step" PARAMETERS = ""  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.pos" MEMBER = "step" VALUE = "{ int( g.Step ) }">
	<MvASSIGN NAME = "l.pos" MEMBER = "store" VALUE = "{ int( g.Upgrade_Store_Pos ) }">
	<MvASSIGN NAME = "l.pos" MEMBER = "module" VALUE = "{ int( g.Upgrade_Module_Pos ) }">
	<MvASSIGN NAME = "l.step_found" VALUE = "0">
	
	<MvWHILE EXPR = "{ (NOT l.step_found) AND (l.pos:step GT 0) }">
		<MvIF EXPR = "{ ( l.pos:step EQ g.Step_Wizard_StoreLicense ) AND (l.pos:store GT 1 ) }">
			<MvASSIGN NAME = "l.pos" MEMBER = "step" VALUE = "{ g.Step_Wizard_StoreRegistration }">
			<MvASSIGN NAME = "l.pos" MEMBER = "store" VALUE = "{ l.pos:store - 1 }">
		<MvELSE>
			<MvIF EXPR = "{ ( l.pos:step EQ g.Step_Wizard_ModuleVersionCheck ) AND (l.pos:module GT 1 ) }">
				<MvASSIGN NAME = "l.pos" MEMBER = "module" VALUE = "{ l.pos:module - 1 }">
			<MvELSE>
				<MvASSIGN NAME = "l.pos" MEMBER = "step" VALUE = "{ l.pos:step - 1 }">
				<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_StoreRegistration }">
					<MvASSIGN NAME = "l.pos" MEMBER = "store" VALUE = "{ g.Upgrade_Store_Count }">
				<MvELSE>
					<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_ModuleVersionCheck }">
						<MvASSIGN NAME = "l.pos" MEMBER = "module" VALUE = "{ g.Upgrade_Module_Count }">
					</MvIF>
				</MvIF>
			</MvIF>		
		</MvIF>
		<MvASSIGN NAME = "l.step_found" VALUE = "{ Upgrade_Check_Step( l.pos ) }">
	</MvWHILE>
	<MvFUNCTIONRETURN VALUE = "{ l.pos }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Check_Step" PARAMETERS = "pos" STANDARDOUTPUTLEVEL = "">
	<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_Welcome }">
		<MvIF EXPR = "{ g.Upgrade_ISP_Skip_Welcome }">
			<MvFUNCTIONRETURN VALUE = "0">
		<MvELSE>
			<MvFUNCTIONRETURN VALUE = "1">
		</MvIF>
	</MvIF>

	<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_LoginPassword }">
		<MvIF EXPR = "{ g.Upgrade_ISP_Skip_LoginPassword }">
			<MvFUNCTIONRETURN VALUE = "0">
		<MvELSE>
			<MvFUNCTIONRETURN VALUE = "1">
		</MvIF>
	</MvIF>

	<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_DomainLicense }">
		<MvIF EXPR = "{ g.Upgrade_ISP_Skip_DomainLicense }">
			<MvFUNCTIONRETURN VALUE = "0">
		<MvELSE>
			<MvIF EXPR = "{ g.Upgrade_DomainLicense_Required }">
				<MvFUNCTIONRETURN VALUE = "1">
			<MvELSE>
				<MvFUNCTIONRETURN VALUE = "0">
			</MvIF>
		</MvIF>
	</MvIF>
	
	<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_DomainRegistration }">
		<MvIF EXPR = "{ g.Upgrade_ISP_Skip_DomainRegistration }">
			<MvFUNCTIONRETURN VALUE = "0">
		<MvELSE>
			<MvFUNCTIONRETURN VALUE = "1">
		</MvIF>
	</MvIF>

	<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_StoreLicense }">
		<MvIF EXPR = "{ g.Upgrade_ISP_Skip_StoreLicense OR ( g.Upgrade_Store_Count EQ 0 ) }">
			<MvFUNCTIONRETURN VALUE = "0">
		<MvELSE>
			<MvIF EXPR = "{ g.Upgrade_Store[ l.pos:store ]:License_Required }">
				<MvFUNCTIONRETURN VALUE = "1">
			<MvELSE>
				<MvFUNCTIONRETURN VALUE = "0">
			</MvIF>
		</MvIF>
	</MvIF>
	
	<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_StoreRegistration }">
		<MvIF EXPR = "{ g.Upgrade_ISP_Skip_StoreRegistration OR ( g.Upgrade_Store_Count EQ 0 ) }">
			<MvFUNCTIONRETURN VALUE = "0">
		<MvELSE>
			<MvFUNCTIONRETURN VALUE = "1">
		</MvIF>
	</MvIF>

	<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_ModuleVersionCheck }">
		<MvIF EXPR = "{ g.Upgrade_ISP_Skip_ModuleVersionCheck OR ( g.Upgrade_Module_Count EQ 0 ) }">
			<MvFUNCTIONRETURN VALUE = "0">
		<MvELSE>
			<MvFUNCTIONRETURN VALUE = "1">
		</MvIF>
	</MvIF>

	<MvIF EXPR = "{ l.pos:step EQ g.Step_Wizard_Finish }">
		<MvIF EXPR = "{ g.Upgrade_ISP_Skip_Finish }">
			<MvFUNCTIONRETURN VALUE = "0">
		<MvELSE>
			<MvFUNCTIONRETURN VALUE = "1">
		</MvIF>
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_License_Validate" PARAMETERS = "type, version, license"  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.API" VALUE = "{ s.apitype }">
	<MvASSIGN NAME = "l.MERCHANT_HOST" VALUE = "{ s.server_name }">
	<MvASSIGN NAME = "l.LICENSE_NUMBER" VALUE = "{ l.license }">
	<MvASSIGN NAME = "l.MERCHANT_VERSION" VALUE = "{ l.version }">
	<MvASSIGN NAME = "l.PRODUCT_LINE" VALUE = "MERCHANT">
	<MvASSIGN NAME = "l.PRODUCT_TYPE" VALUE = "{ l.type }">
	<MvASSIGN NAME = "l.OPERATIONS" VALUE = "VALIDATE">
	<MvOPEN NAME = "Domain_Temp" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
	<MvASSIGN NAME = "l.MERCHANT_STOREURL" VALUE = "{ Domain_Temp.d.mm_url }">
	<MvCLOSE NAME = "Domain_Temp">

	<MvASSIGN NAME = "l.valid_value" VALUE = "">
	<MvASSIGN NAME = "l.error_code_value" VALUE = "">
	<MvASSIGN NAME = "l.error_message_value" VALUE = "">

	<MvCALL METHOD = "POST"
			ACTION = "http://licensemgr.miva.com/gateway/gateway.mv"
			FIELDS = "MERCHANT_HOST, API, LICENSE_NUMBER, MERCHANT_VERSION, OPERATIONS, PRODUCT_TYPE, PRODUCT_LINE, MERCHANT_STOREURL">
		<MvIF EXPR = "{ s.callobjectelement EQ 'LmLICENSE' }">
			<MvASSIGN NAME = "l.attribute" VALUE = "1">
			<MvWHILE EXPR = "{ ( l.attribute LE s.callobjectnumattributes ) }">
				<MvIF EXPR = "{ s.callobjectattribute[ l.attribute ] EQ 'VALID' }">
					<MvASSIGN NAME = "l.valid_value" VALUE = "{ s.callobjectvalue[ l.attribute ] }">
				</MvIF>

				<MvIF EXPR = "{ s.callobjectattribute[ l.attribute ] EQ 'ERROR_CODE' }">
					<MvASSIGN NAME = "l.error_code_value" VALUE = "{ s.callobjectvalue[ l.attribute ] }">
				</MvIF>

				<MvIF EXPR = "{ s.callobjectattribute[ l.attribute ] EQ 'ERROR_MESSAGE' }">
					<MvASSIGN NAME = "l.error_message_value" VALUE = "{ s.callobjectvalue[ l.attribute ] }">
				</MvIF>

				<MvASSIGN NAME = "l.attribute" VALUE = "{ l.attribute + 1 }">
			</MvWHILE>
		</MvIF>
	</MvCALL>
	
	<MvIF EXPR = "{ MvCALL_Error }">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.error" VALUE = "{ Error( 'MER-UPG-00002', MvCALL_Error ) }">
		<MvFUNCTIONRETURN VALUE = 0>
	</MvIF>

	<MvIF EXPR = "{ toupper( l.valid_value ) NE 'YES' }">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.error" VALUE = "{ Error( l.error_code_value, l.error_message_value ) }">
		<MvFUNCTIONRETURN VALUE = 0>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_License_Activate" PARAMETERS = "type, old_license, old_license_email, upgrade_license"  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.LICENSE_NUMBER" VALUE = "{ l.upgrade_license }">
	<MvASSIGN NAME = "l.OLD_LICENSE_NUMBER" VALUE = "{ l.old_license }">
	<MvASSIGN NAME = "l.PRODUCT_LINE" VALUE = "MERCHANT">
	<MvASSIGN NAME = "l.PRODUCT_TYPE" VALUE = "{ l.type }">
	<MvASSIGN NAME = "l.OPERATIONS" VALUE = "ACTIVATE">
	<MvASSIGN NAME = "l.EMAIL" VALUE = "{ l.old_license_email }">
	<MvASSIGN NAME = "l.LANGUAGE" VALUE = "{ s.miva_language }">
	<MvOPEN NAME = "Domain_Temp" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
	<MvASSIGN NAME = "l.MERCHANT_STOREURL" VALUE = "{ Domain_Temp.d.mm_url }">
	<MvCLOSE NAME = "Domain_Temp">

	<MvASSIGN NAME = "l.activated_value" VALUE = "">
	<MvASSIGN NAME = "l.error_code_value" VALUE = "">
	<MvASSIGN NAME = "l.error_message_value" VALUE = "">

	<MvCALL METHOD = "POST"
			ACTION = "http://licensemgr.miva.com/gateway/gateway.mv"
			FIELDS = "PRODUCT_LINE, OPERATIONS, OLD_LICENSE_NUMBER, LICENSE_NUMBER, EMAIL, LANGUAGE, MERCHANT_STOREURL">
		<MvIF EXPR = "{ s.callobjectelement EQ 'LmLICENSE' }">
			<MvASSIGN NAME = "l.attribute" VALUE = "1">
			<MvWHILE EXPR = "{ ( l.attribute LE s.callobjectnumattributes ) }">
				<MvIF EXPR = "{ s.callobjectattribute[ l.attribute ] EQ 'ACTIVATED' }">
					<MvASSIGN NAME = "l.activated_value" VALUE = "{ s.callobjectvalue[ l.attribute ] }">
				</MvIF>

				<MvIF EXPR = "{ s.callobjectattribute[ l.attribute ] EQ 'ERROR_CODE' }">
					<MvASSIGN NAME = "l.error_code_value" VALUE = "{ s.callobjectvalue[ l.attribute ] }">
				</MvIF>

				<MvIF EXPR = "{ s.callobjectattribute[ l.attribute ] EQ 'ERROR_MESSAGE' }">
					<MvASSIGN NAME = "l.error_message_value" VALUE = "{ s.callobjectvalue[ l.attribute ] }">
				</MvIF>

				<MvASSIGN NAME = "l.attribute" VALUE = "{ l.attribute + 1 }">
			</MvWHILE>
		</MvIF>
	</MvCALL>
	
	<MvIF EXPR = "{ MvCALL_Error }">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.error" VALUE = "{ Error( 'MER-UPG-00003', MvCALL_Error ) }">
		<MvFUNCTIONRETURN VALUE = 0>
	</MvIF>

	<MvIF EXPR = "{ toupper( l.activated_value ) NE 'YES' }">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.error" VALUE = "{ Error( l.error_code_value, l.error_message_value ) }">
		<MvFUNCTIONRETURN VALUE = 0>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_License_Register" PARAMETERS = "type, license, owner, company, address, city, state, zip, country, phone, fax, email"  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.API" VALUE = "{ s.apitype }">
	<MvASSIGN NAME = "l.MERCHANT_HOST" VALUE = "{ s.server_name }">
	<MvASSIGN NAME = "l.LICENSE_NUMBER" VALUE = "{ l.license }">
	<MvASSIGN NAME = "l.MERCHANT_VERSION" VALUE = "{ g.Merchant_Version }">
	<MvASSIGN NAME = "l.NAME" VALUE = "{ l.owner }">
	<MvASSIGN NAME = "l.COMPANY" VALUE = "{ l.company }">
	<MvASSIGN NAME = "l.ADDRESS" VALUE = "{ l.address }">
	<MvASSIGN NAME = "l.CITY" VALUE = "{ l.city }">
	<MvASSIGN NAME = "l.STATE" VALUE = "{ l.state }">
	<MvASSIGN NAME = "l.ZIP" VALUE = "{ l.zip }">
	<MvASSIGN NAME = "l.COUNTRY" VALUE = "{ l.country }">
	<MvASSIGN NAME = "l.PHONE" VALUE = "{ l.phone }">
	<MvASSIGN NAME = "l.FAX" VALUE = "{ l.fax }">
	<MvASSIGN NAME = "l.EMAIL" VALUE = "{ l.email }">
	<MvASSIGN NAME = "l.PRODUCT_LINE" VALUE = "MERCHANT">
	<MvASSIGN NAME = "l.PRODUCT_TYPE" VALUE = "{ l.type }">
	<MvASSIGN NAME = "l.OPERATIONS" VALUE = "REGISTER">
	<MvASSIGN NAME = "l.LANGUAGE" VALUE = "{ s.miva_language }">
	<MvOPEN NAME = "Domain_Temp" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
	<MvASSIGN NAME = "l.MERCHANT_STOREURL" VALUE = "{ Domain_Temp.d.mm_url }">
	<MvCLOSE NAME = "Domain_Temp">

	<MvASSIGN NAME = "l.valid_value" VALUE = "">
	<MvASSIGN NAME = "l.error_code_value" VALUE = "">
	<MvASSIGN NAME = "l.error_message_value" VALUE = "">

	<MvCALL METHOD = "POST"
			ACTION = "http://licensemgr.miva.com/gateway/gateway.mv"
			FIELDS = "API, MERCHANT_HOST, LICENSE_NUMBER, MERCHANT_VERSION, NAME, COMPANY, ADDRESS, CITY,
					  STATE, ZIP, COUNTRY, PHONE, FAX, EMAIL, PRODUCT_LINE, PRODUCT_TYPE, OPERATIONS, LANGUAGE, MERCHANT_STOREURL">
		<MvIF EXPR = "{ s.callobjectelement EQ 'LmLICENSE' }">
			<MvASSIGN NAME = "l.attribute" VALUE = "1">
			<MvWHILE EXPR = "{ ( l.attribute LE s.callobjectnumattributes ) }">
				<MvIF EXPR = "{ s.callobjectattribute[ l.attribute ] EQ 'VALID' }">
					<MvASSIGN NAME = "l.valid_value" VALUE = "{ s.callobjectvalue[ l.attribute ] }">
				</MvIF>

				<MvIF EXPR = "{ s.callobjectattribute[ l.attribute ] EQ 'ERROR_CODE' }">
					<MvASSIGN NAME = "l.error_code_value" VALUE = "{ s.callobjectvalue[ l.attribute ] }">
				</MvIF>

				<MvIF EXPR = "{ s.callobjectattribute[ l.attribute ] EQ 'ERROR_MESSAGE' }">
					<MvASSIGN NAME = "l.error_message_value" VALUE = "{ s.callobjectvalue[ l.attribute ] }">
				</MvIF>

				<MvASSIGN NAME = "l.attribute" VALUE = "{ l.attribute + 1 }">
			</MvWHILE>
		</MvIF>
	</MvCALL>
	
	<MvIF EXPR = "{ MvCALL_Error }">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.error" VALUE = "{ Error( 'MER-UPG-00004', MvCALL_Error ) }">
		<MvFUNCTIONRETURN VALUE = 0>
	</MvIF>

	<MvIF EXPR = "{ toupper( l.valid_value ) NE 'YES' }">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.error" VALUE = "{ Error( l.error_code_value, l.error_message_value ) }">
		<MvFUNCTIONRETURN VALUE = 0>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Validate"  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "g.Upgrade_Login" VALUE = "{ ltrim( rtrim( g.Upgrade_Login ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Password" VALUE = "{ ltrim( rtrim( g.Upgrade_Password ) ) }">

	<MvASSIGN NAME = "g.Upgrade_DomainLicense" VALUE = "{ ltrim( rtrim( g.Upgrade_DomainLicense ) ) }">
	<MvASSIGN NAME = "g.Upgrade_DomainLicenseEmail" VALUE = "{ ltrim( rtrim( g.Upgrade_DomainLicenseEmail ) ) }">

	<MvASSIGN NAME = "g.Upgrade_Domain_Owner" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Owner ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Email" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Email ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Company" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Company ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Address" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Address ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_City" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_City ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_StateSelect" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_StateSelect ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_State" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_State ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Zip" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Zip ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Country" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Country ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Phone" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Phone ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Fax" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Fax ) ) }">

	<MvASSIGN NAME = "l.pos" VALUE = 1>
	<MvWHILE EXPR = "{ l.pos LE g.Upgrade_Store_Count }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "License" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:License ) ) }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "Email" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:Email ) ) }">

		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationOwner" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:RegistrationOwner ) ) }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationEmail" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:RegistrationEmail ) ) }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationCompany" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:RegistrationCompany ) ) }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationAddress" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:RegistrationAddress ) ) }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationCity" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:RegistrationCity ) ) }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationStateSelect" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:RegistrationStateSelect ) ) }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationState" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:RegistrationState ) ) }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationZip" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:RegistrationZip ) ) }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationCountry" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:RegistrationCountry ) ) }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationPhone" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:RegistrationPhone ) ) }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationFax" VALUE = "{ ltrim( rtrim( g.Upgrade_Store[ l.pos ]:RegistrationFax ) ) }">

		<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
	</MvWHILE>

	<MvCOMMENT>
	|
	| Login/Password
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvIF EXPR = "{ len( g.Upgrade_Login ) EQ 0 }">
		<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00039">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify a username.</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie einen Benutzernamen an.</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_LoginPassword, 'Upgrade_Login', l.error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_Password ) EQ 0 }">
		<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00040">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify a password.</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie ein Passwort an.</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_LoginPassword, 'Upgrade_Password', l.error ) }">
	</MvIF>
	
	<MvOPEN NAME = "Upgrade_Users" DATABASE = "{ g.MerchantPath $ 'users.dbf' }" INDEXES = "{ g.MerchantPath $ 'usr_name.mvx' }">
	<MvIF EXPR = "{ NOT MvOPEN_Error }">
		<MvASSIGN NAME = "l.valid" VALUE = 0>

		<MvFIND NAME = "Upgrade_Users" VALUE = "{ toupper( g.Upgrade_Login ) }" EXACT>
		<MvIF EXPR = "{ NOT Upgrade_Users.d.EOF }">
		
			<MvIF EXPR = "{ s.version LT 3.9026 }">
				<MvIF EXPR = "{ substring( Upgrade_Users.d.password, 1, 3 ) EQ '$1$' }">
					<MvASSIGN NAME = "l.salt" VALUE = "{ substring( Upgrade_Users.d.password, 4, 2 ) }">
				<MvELSE>
					<MvASSIGN NAME = "l.salt" VALUE = "{ substring( Upgrade_Users.d.password, 1, 2 ) }">
				</MvIF>
			<MvELSE>
				<MvASSIGN NAME = "l.salt" VALUE = "{ Upgrade_Users.d.password }">
			</MvIF>

			<MvIF EXPR = "{ ( g.Upgrade_Password CRYPT l.salt ) EQ Upgrade_Users.d.password }">
				<MvIF EXPR = "{ Upgrade_Users.d.admin }">
					<MvASSIGN NAME = "l.valid" VALUE = 1>
				</MvIF>
			</MvIF>
		</MvIF>

		<MvIF EXPR = "{ NOT l.valid }">
			<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00041">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Invalid username/password, or the user specified does not have administrative privileges.</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Ung�ltiger Benutzername/ung�ltiges Passwort oder der angegebene Benutzer verf�gt nicht �ber administrative Rechte.</MvLOCALIZED-TEXT>
			</MvLOCALIZED>

			<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_LoginPassword, 'Upgrade_Login', l.error ) }">
		</MvIF>

		<MvCLOSE NAME = "Upgrade_Users">
	</MvIF>

	<MvCOMMENT>
	|
	| Domain License
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvIF EXPR = "{ g.Upgrade_DomainLicense_Required }">
		<MvIF EXPR = "{ len( g.Upgrade_DomainLicense ) EQ 0 }">
			<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00042">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter a domain upgrade license</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie eine Domain-Upgrade-Lizenz ein</MvLOCALIZED-TEXT>
			</MvLOCALIZED>

			<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainLicense, 'Upgrade_DomainLicense', l.error ) }">
		</MvIF>

		<MvIF EXPR = "{ len( g.Upgrade_DomainLicenseEmail ) EQ 0 }">
			<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00043">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the email address used to register your prior version of Miva Merchant</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Geben Sie bitte die bei der Registrierung der vorherigen Version von Miva Merchant verwendete E-Mail-Adresse ein</MvLOCALIZED-TEXT>
			</MvLOCALIZED>

			<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainLicense, 'Upgrade_DomainLicense', l.error ) }">
		</MvIF>
	</MvIF>

	<MvIF EXPR = "{ NOT Upgrade_License_Validate( 'DOMAIN', g.Merchant_Version, Domain.d.license ) }">
		<MvASSIGN NAME = "g.Upgrade_DomainLicense_Valid" VALUE = 0>
		<MvASSIGN NAME = "g.Upgrade_DomainLicense_Required" VALUE = 1>

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainLicense, 'Upgrade_DomainLicense', g.Error_Code $ ': ' $ g.Error_Message ) }">
	</MvIF>

	<MvCOMMENT>
	|
	| Domain Registration
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvIF EXPR = "{ len( g.Upgrade_Domain_Owner ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00044">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the name of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie den Namen des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Owner', l.field_error ) }">
	</MvIF>

	<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.ok" VALUE = "{ Validate_Email( g.Upgrade_Domain_Email ) }">
	<MvIF EXPR = "{ NOT l.ok }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00045">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the email address of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die E-Mail-Adresse des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Email', l.field_error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_Domain_Address ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00046">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the address of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Strasse des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Address', l.field_error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_Domain_City ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00047">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the city of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie den Wohnort des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( l.step, 'Upgrade_Domain_City', l.field_error ) }">
	</MvIF>

	<MvASSIGN NAME = "g.Upgrade_Domain_Use_State" VALUE = "{ g.Upgrade_Domain_State }">
	<MvIF EXPR = "{ len( g.Upgrade_Domain_Use_State ) EQ 0 }">
		<MvASSIGN NAME = "g.Upgrade_Domain_Use_State" VALUE = "{ g.Upgrade_Domain_StateSelect }">
	</MvIF>

	<MvIF EXPR = "{ ( len( g.Upgrade_Domain_Use_State ) EQ 0 ) AND ( g.Upgrade_Domain_Country EQ 'US' ) }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00048">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the state/province of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie das Bundesland des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_State', l.field_error ) }">
	</MvIF>

	<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.valid" VALUE = "{ Validate_Zip( g.Upgrade_Domain_Zip, g.Upgrade_Domain_Country ) }">		
	<MvIF EXPR = "{ NOT l.valid }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00049">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the Zip/Postal code of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Postleitzahl f�r den Wohnort des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Zip', l.field_error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_Domain_Country ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-SET-00045">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please select the country of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte w�hlen Sie das Land des Domain-Administrators</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Country', l.field_error ) }">
	</MvIF>

	<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.valid" VALUE = "{ Validate_Phone( g.Upgrade_Domain_Phone, g.Upgrade_Domain_Country ) }">
	<MvIF EXPR = "{ NOT l.valid }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00050">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the phone number of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Telefonnummer des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Phone', l.field_error ) }">
	</MvIF>

	<MvCOMMENT>
	|
	| *********************************************************************************************
	| Store Validation Begins Here
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvGO NAME = "Stores" ROW = "top">
	<MvWHILE EXPR = "{ NOT Stores.d.EOF }">
		<MvIF EXPR = "{ Stores.d.license NE Domain.d.license }">
			<MvASSIGN NAME = "l.pos" VALUE = 1>
			<MvWHILE EXPR = "{ l.pos LE g.Upgrade_Store_Count }">
				<MvIF EXPR = "{ g.Upgrade_Store[ l.pos ]:ID EQ Stores.d.id }">
					<MvWHILESTOP>
				</MvIF>

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
			</MvWHILE>

			<MvCOMMENT>
			|
			| Store License
			| *********************************************************************************************
			|
			</MvCOMMENT>

			<MvIF EXPR = "{ g.Upgrade_Store[ l.pos ]:License_Required }">
				<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:License ) EQ 0 }">
					<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00051">
						<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter a store upgrade license</MvLOCALIZED-TEXT>
						<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Laden-Upgrade-Lizenz ein</MvLOCALIZED-TEXT>
					</MvLOCALIZED>

					<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreLicense, l.pos, 'Upgrade_Store_Current_License', l.error ) }">
				</MvIF>
				
				<MvASSIGN NAME = "l.other_pos" VALUE = "1">
				<MvWHILE EXPR = "{ l.other_pos LT l.pos }">

					<MvIF EXPR = "{ ( g.Upgrade_Store[ l.pos ]:License EQ g.Upgrade_Store[ l.other_pos ]:License ) OR ( len( g.Upgrade_Store[ l.other_pos ]:Original_License ) AND ( g.Upgrade_Store[ l.pos ]:License EQ g.Upgrade_Store[ l.other_pos ]:Original_License ) ) }">
						<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00142">
							<MvLOCALIZED-TOKEN NAME = "license" VALUE = "{ g.Upgrade_Store[ l.pos ]:License }">
							<MvLOCALIZED-TEXT LANGUAGE = "en-US">Sorry, you are already using license number '%license%' for another storefront. Please check your records and try again.</MvLOCALIZED-TEXT>
							<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Leider benutzen Sie bereits die Lizenznummer '%license%' f�r eine andere Store Front. Bitte �berpr�fen Sie Ihre Unterlagen, und versuchen Sie es noch einmal.</MvLOCALIZED-TEXT>
						</MvLOCALIZED>
						<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreLicense, l.pos, 'Upgrade_Store_Current_License', l.error ) }">
					</MvIF>
					<MvASSIGN NAME = "l.other_pos" VALUE = "{ l.other_pos + 1 }">
				</MvWHILE>

				<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:Email ) EQ 0 }">
					<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00052">
						<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the email address used to register this store in the prior version of Miva Merchant</MvLOCALIZED-TEXT>
						<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Geben Sie bitte die bei der Registrierung dieses Ladens in der vorherigen Version von Miva Merchant verwendete E-Mail-Adresse ein</MvLOCALIZED-TEXT>
					</MvLOCALIZED>

					<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreLicense, l.pos, 'Upgrade_Store_Current_Email', l.error ) }">
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ NOT Upgrade_License_Validate( 'STOREFRONT', g.Merchant_Version, Stores.d.license ) }">
				<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "License_Required" VALUE = 1>
				<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "Valid" VALUE = 0>

				<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreLicense, l.pos, 'Upgrade_Store_Current_License', g.Error_Code $ ': ' $ g.Error_Message ) }">
			</MvIF>

			<MvCOMMENT>
			|
			| Store Registration
			| *********************************************************************************************
			|
			</MvCOMMENT>

			<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:RegistrationOwner ) EQ 0 }">
				<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00053">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's name</MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie den Namen des Ladenbesitzers an</MvLOCALIZED-TEXT>
				</MvLOCALIZED>			

				<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreRegistration, l.pos, 'Upgrade_Store_Current_RegistrationOwner', l.field_error ) }">
			</MvIF>

			<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.ok" VALUE = "{ Validate_Email( g.Upgrade_Store[ l.pos ]:RegistrationEmail ) }">
			<MvIF EXPR = "{ NOT l.ok }">
				<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00054">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's email address</MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die E-Mail-Adresse des Ladenbesitzers an</MvLOCALIZED-TEXT>
				</MvLOCALIZED>			

				<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreRegistration, l.pos, 'Upgrade_Store_Current_RegistrationEmail', l.field_error ) }">
			</MvIF>

			<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:RegistrationAddress ) EQ 0 }">
				<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00055">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's address</MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Strasse des Ladenbesitzers an</MvLOCALIZED-TEXT>
				</MvLOCALIZED>			

				<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreRegistration, l.pos, 'Upgrade_Store_Current_RegistrationAddress', l.field_error ) }">
			</MvIF>

			<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:RegistrationCity ) EQ 0 }">
				<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00056">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's city</MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie den Ort des Ladenbesitzers an</MvLOCALIZED-TEXT>
				</MvLOCALIZED>			

				<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreRegistration, l.pos, 'Upgrade_Store_Current_RegistrationCity', l.field_error ) }">
			</MvIF>

			<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationUse_State" VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationState }">
			<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:RegistrationUse_State ) EQ 0 }">
				<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationUse_State" VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationStateSelect }">
			</MvIF>

			<MvIF EXPR = "{ ( len( g.Upgrade_Store[ l.pos ]:RegistrationUse_State ) EQ 0 ) AND ( g.Upgrade_Store[ l.pos ]:RegistrationCountry EQ 'US' ) }">
				<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00057">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's State/Province</MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie das Bundesland des Ladenbesitzers an</MvLOCALIZED-TEXT>
				</MvLOCALIZED>			

				<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreRegistration, l.pos, 'Upgrade_Store_Current_RegistrationState', l.field_error ) }">
			</MvIF>

			<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.valid" VALUE = "{ Validate_Zip( g.Upgrade_Store[ l.pos ]:RegistrationZip, g.Upgrade_Store[ l.pos ]:RegistrationCountry ) }">		
			<MvIF EXPR = "{ NOT l.valid }">
				<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00058">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's Zip/Postal code</MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Postleitzahl des Ladenbesitzers an</MvLOCALIZED-TEXT>
				</MvLOCALIZED>			

				<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreRegistration, l.pos, 'Upgrade_Store_Current_RegistrationZip', l.field_error ) }">
			</MvIF>

			<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:RegistrationCountry ) EQ 0 }">
				<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00136">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's country</MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie das Land des Ladenbesitzers an</MvLOCALIZED-TEXT>
				</MvLOCALIZED>			

				<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreRegistration, l.pos, 'Upgrade_Store_Current_RegistrationCountry', l.field_error ) }">
			</MvIF>

			<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.valid" VALUE = "{ Validate_Phone( g.Upgrade_Store[ l.pos ]:RegistrationPhone, g.Upgrade_Store[ l.pos ]:RegistrationCountry ) }">
			<MvIF EXPR = "{ NOT l.valid }">
				<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00059">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's phone number</MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Telefonnummer des Ladenbesitzers an</MvLOCALIZED-TEXT>
				</MvLOCALIZED>			

				<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_FieldError( g.Step_Wizard_StoreRegistration, l.pos, 'Upgrade_Store_Current_RegistrationPhone', l.field_error ) }">
			</MvIF>
		</MvIF>

		<MvSKIP NAME = "Stores" ROWS = 1>
	</MvWHILE>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Action_Upgrade"  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.ok" VALUE = 1>

	<MvOPEN NAME = "Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
	<MvIF EXPR = "{ MvOPEN_Error }">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00005', MvOPEN_Error ) }">
	<MvELSE>
		<MvOPEN NAME = "Stores" 
				DATABASE = "{ g.MerchantPath $ 'stores.dbf' }" 
				INDEXES = "{ g.MerchantPath $ 'str_id.mvx, ' $ 
							 g.MerchantPath $ 'str_code.mvx, ' $ 
							 g.MerchantPath $ 'str_lic.mvx' }">
		<MvIF EXPR = "{ MvOPEN_Error }">
			<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00006', MvOPEN_Error ) }">
		<MvELSE>
			<MvFILTER NAME = "Stores" FILTER = "{ NOT Stores.d.deleted }">

			<MvIF EXPR = "{ Upgrade_Validate() }">
				<MvIF EXPR = "{ NOT Upgrade_License_Register( 'DOMAIN', Domain.d.license,
															  g.Upgrade_Domain_Owner,
															  g.Upgrade_Domain_Company,
															  g.Upgrade_Domain_Address,
															  g.Upgrade_Domain_City,
															  g.Upgrade_Domain_Use_State,
															  g.Upgrade_Domain_Zip,
															  g.Upgrade_Domain_Country,
															  g.Upgrade_Domain_Phone,
															  g.Upgrade_Domain_Fax,
															  g.Upgrade_Domain_Email ) }">
					<MvFUNCTIONRETURN VALUE = 0>
				<MvELSE>
					<MvASSIGN NAME = "Domain.d.owner"	VALUE = "{ g.Upgrade_Domain_Owner }">
					<MvASSIGN NAME = "Domain.d.email"	VALUE = "{ g.Upgrade_Domain_Email }">
					<MvASSIGN NAME = "Domain.d.company"	VALUE = "{ g.Upgrade_Domain_Company }">
					<MvASSIGN NAME = "Domain.d.address"	VALUE = "{ g.Upgrade_Domain_Address }">
					<MvASSIGN NAME = "Domain.d.city"	VALUE = "{ g.Upgrade_Domain_City }">
					<MvASSIGN NAME = "Domain.d.state"	VALUE = "{ g.Upgrade_Domain_Use_State }">
					<MvASSIGN NAME = "Domain.d.zip"		VALUE = "{ g.Upgrade_Domain_Zip }">
					<MvASSIGN NAME = "Domain.d.country"	VALUE = "{ g.Upgrade_Domain_Country }">
					<MvASSIGN NAME = "Domain.d.phone"	VALUE = "{ g.Upgrade_Domain_Phone }">
					<MvASSIGN NAME = "Domain.d.fax"		VALUE = "{ g.Upgrade_Domain_Fax }">

					<MvUPDATE NAME = "Domain">
				</MvIF>

				<MvGO NAME = "Stores" ROW = "top">
				<MvWHILE EXPR = "{ NOT Stores.d.EOF }">
					<MvASSIGN NAME = "l.pos" VALUE = 1>
					<MvWHILE EXPR = "{ l.pos LE g.Upgrade_Store_Count }">
						<MvIF EXPR = "{ g.Upgrade_Store[ l.pos ]:ID EQ Stores.d.id }">
							<MvWHILESTOP>
						</MvIF>

						<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
					</MvWHILE>

					<MvIF EXPR = "{ Stores.d.license EQ Domain.d.license }">
						<MvASSIGN NAME = "Stores.d.owner"	VALUE = "{ g.Upgrade_Domain_Owner }">
						<MvASSIGN NAME = "Stores.d.email"	VALUE = "{ g.Upgrade_Domain_Email }">
						<MvASSIGN NAME = "Stores.d.company"	VALUE = "{ g.Upgrade_Domain_Company }">
						<MvASSIGN NAME = "Stores.d.address"	VALUE = "{ g.Upgrade_Domain_Address }">
						<MvASSIGN NAME = "Stores.d.city"	VALUE = "{ g.Upgrade_Domain_City }">
						<MvASSIGN NAME = "Stores.d.state"	VALUE = "{ g.Upgrade_Domain_Use_State }">
						<MvASSIGN NAME = "Stores.d.zip"		VALUE = "{ g.Upgrade_Domain_Zip }">
						<MvASSIGN NAME = "Stores.d.country"	VALUE = "{ g.Upgrade_Domain_Country }">
						<MvASSIGN NAME = "Stores.d.phone"	VALUE = "{ g.Upgrade_Domain_Phone }">
						<MvASSIGN NAME = "Stores.d.fax"		VALUE = "{ g.Upgrade_Domain_Fax }">
					<MvELSE>
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "Registration_Use_State" VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationState }">
						<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:Registration_Use_State ) EQ 0 }">
							<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "Registration_Use_State" VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationStateSelect }">
						</MvIF>
					
						<MvIF EXPR = "{ NOT Upgrade_License_Register( 'STOREFRONT', Stores.d.license,
																	  g.Upgrade_Store[ l.pos ]:RegistrationOwner,
																	  g.Upgrade_Store[ l.pos ]:RegistrationCompany,
																	  g.Upgrade_Store[ l.pos ]:RegistrationAddress,
																	  g.Upgrade_Store[ l.pos ]:RegistrationCity,
																	  g.Upgrade_Store[ l.pos ]:Registration_Use_State,
																	  g.Upgrade_Store[ l.pos ]:RegistrationZip,
																	  g.Upgrade_Store[ l.pos ]:RegistrationCountry,
																	  g.Upgrade_Store[ l.pos ]:RegistrationPhone,
																	  g.Upgrade_Store[ l.pos ]:RegistrationFax,
																	  g.Upgrade_Store[ l.pos ]:RegistrationEmail ) }">
							<MvFUNCTIONRETURN VALUE = 0>
						</MvIF>

						<MvASSIGN NAME = "Stores.d.owner"	VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationOwner }">
						<MvASSIGN NAME = "Stores.d.email"	VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationEmail }">
						<MvASSIGN NAME = "Stores.d.company"	VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationCompany }">
						<MvASSIGN NAME = "Stores.d.address"	VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationAddress }">
						<MvASSIGN NAME = "Stores.d.city"	VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationCity }">
						<MvASSIGN NAME = "Stores.d.state"	VALUE = "{ g.Upgrade_Store[ l.pos ]:Registration_Use_State }">
						<MvASSIGN NAME = "Stores.d.zip"		VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationZip }">
						<MvASSIGN NAME = "Stores.d.country"	VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationCountry }">
						<MvASSIGN NAME = "Stores.d.phone"	VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationPhone }">
						<MvASSIGN NAME = "Stores.d.fax"		VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationFax }">
					</MvIF>
					<MvUPDATE NAME = "Stores">
					<MvSKIP NAME = "Stores" ROWS = 1>
				</MvWHILE>

				<MvASSIGN NAME = "g.Screen" VALUE = "UPGD">
			</MvIF>

			<MvCLOSE NAME = "Stores">
		</MvIF>

		<MvCLOSE NAME = "Domain">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = "{ l.ok }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Validate_Step" PARAMETERS = "step"  STANDARDOUTPUTLEVEL = "">
	<MvIF EXPR = "{ l.step EQ g.Step_Wizard_LoginPassword }">
		<MvIF EXPR = "{ NOT Upgrade_Validate_Step_LoginPassword() }">
			<MvFUNCTIONRETURN VALUE = 0>
		</MvIF>
	</MvIF>

	<MvIF EXPR = "{ l.step EQ g.Step_Wizard_DomainLicense }">
		<MvIF EXPR = "{ NOT Upgrade_Validate_Step_DomainLicense() }">
			<MvFUNCTIONRETURN VALUE = 0>
		</MvIF>
	</MvIF>

	<MvIF EXPR = "{ l.step EQ g.Step_Wizard_DomainRegistration }">
		<MvIF EXPR = "{ NOT Upgrade_Validate_Step_DomainRegistration() }">
			<MvFUNCTIONRETURN VALUE = 0>
		</MvIF>
	</MvIF>

	<MvIF EXPR = "{ l.step EQ g.Step_Wizard_StoreLicense }">
		<MvIF EXPR = "{ NOT Upgrade_Validate_Step_StoreLicense() }">
			<MvFUNCTIONRETURN VALUE = 0>
		</MvIF>
	</MvIF>

	<MvIF EXPR = "{ l.step EQ g.Step_Wizard_StoreRegistration }">
		<MvIF EXPR = "{ NOT Upgrade_Validate_Step_StoreRegistration() }">
			<MvFUNCTIONRETURN VALUE = 0>
		</MvIF>
	</MvIF>

	<MvIF EXPR = "{ l.step EQ g.Step_Wizard_ModuleVersionCheck }">
		<MvIF EXPR = "{ NOT Upgrade_Validate_Step_ModuleVersionCheck() }">
			<MvFUNCTIONRETURN VALUE = 0>
		</MvIF>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Load_ISP_Defaults"  STANDARDOUTPUTLEVEL = "">
	<MvIF EXPR = "{ fexists( 'UPGRADE.dat' ) }">
<MvCOMMENT>
|
| UPGRADE.dat contains the following | delimiter fields in the following order:
|		Product							"MERCHANT"
|		ForceUpgrade					Bool			Not honored in this version
|		Skip_Welcome					Bool
|		Skip_LoginPassword				Bool			Not honored in this version
|		Skip_DomainLicense				Bool
|		Skip_DomainRegistration			Bool
|		Skip_StoreLicense				Bool
|		Skip_StoreRegistration			Bool
|		Skip_ModuleVersionCheck			Bool
|		Skip_Finish						Bool
|		ModuleVersionCheck_Default		[skip | keep]
|		ModuleVersionCheck_CanUpload	Bool			False will prevent new module use
|		ForceUpgrade					Bool			Forces user into upgrade on start up
|		Domain_License					freeform
|		StoreLicense					freeform
|
|		Bool values starting with "y" of "Y" are true, all other false
|		...StoreLicense may be repeated indefinately
|
|		This example file shows only the login and license screens
|
|		MERCHANT|n/a|Y|N|N|Y|N|Y|Y|Y|keep|N|domainbogus1|storebogus1|storebogus3					
|
</MvCOMMENT>

		<MvASSIGN NAME = "g.Upgrade_ISP_Defaults" VALUE = "yes">
		<MvASSIGN NAME = "g.Upgrade_ISP_DomainLicense" VALUE = "">
		<MvASSIGN NAME = "g.Upgrade_ISP_StoreLicense_Count" VALUE = "0">
		<MvIMPORT 	FILE = "UPGRADE.dat"
					FIELDS = "l.isp_data"
					DELIMITER = "">
			<MvASSIGN NAME = "l.product" VALUE = "{ toupper( ltrim( rtrim( gettoken( l.isp_data, '|', 1 ) ) ) ) }">
			<MvIF EXPR = "{ l.product EQ 'MERCHANT' }">
				<MvASSIGN NAME = "l.pos" VALUE = "2">

				<MvASSIGN NAME = "g.Upgrade_ISP_ForceUpgrade" VALUE = "{ Upgrade_Parse_Boolean( gettoken( l.isp_data, '|', l.pos  ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_Skip_Welcome" VALUE = "{ Upgrade_Parse_Boolean( gettoken( l.isp_data, '|', l.pos  ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_Skip_LoginPassword" VALUE = "{ Upgrade_Parse_Boolean( gettoken( l.isp_data, '|', l.pos  ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_Skip_DomainLicense" VALUE = "{ Upgrade_Parse_Boolean( gettoken( l.isp_data, '|', l.pos  ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_Skip_DomainRegistration" VALUE = "{ Upgrade_Parse_Boolean( gettoken( l.isp_data, '|', l.pos  ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_Skip_StoreLicense" VALUE = "{ Upgrade_Parse_Boolean( gettoken( l.isp_data, '|', l.pos  ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_Skip_StoreRegistration" VALUE = "{ Upgrade_Parse_Boolean( gettoken( l.isp_data, '|', l.pos  ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_Skip_ModuleVersionCheck" VALUE = "{ Upgrade_Parse_Boolean( gettoken( l.isp_data, '|', l.pos  ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_Skip_Finish" VALUE = "{ Upgrade_Parse_Boolean( gettoken( l.isp_data, '|', l.pos  ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_ModuleVersionCheck_Default" VALUE = "{ ltrim( rtrim( gettoken( l.isp_data, '|', l.pos  ) ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_ModuleVersionCheck_CanUpload" VALUE = "{ Upgrade_Parse_Boolean( gettoken( l.isp_data, '|', l.pos  ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_Force_Upgrade" VALUE = "{ Upgrade_Parse_Boolean( gettoken( l.isp_data, '|', l.pos  ) ) }">

insert here

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "g.Upgrade_ISP_Domain_License" VALUE = "{ ltrim( rtrim( gettoken( l.isp_data, '|', l.pos  ) ) ) }">

				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				<MvASSIGN NAME = "l.store_license" VALUE = "{ ltrim( rtrim( gettoken( l.isp_data, '|', l.pos  ) ) ) }">

				<MvWHILE EXPR = "{ len( l.store_license ) }">
					<MvIF EXPR = "{ l.store_license NE g.Upgrade_ISP_Domain_License }">
						<MvASSIGN NAME = "l.license_used" VALUE = "0">
						<MvASSIGN NAME = "l.store_pos" VALUE = "1">
						<MvWHILE EXPR = "{ ( l.store_pos LE g.Upgrade_ISP_StoreLicense_Count ) AND ( NOT l.license_used ) }">
							<MvIF EXPR = "{ l.store_license EQ g.Upgrade_ISP_StoreLicense[ l.store_pos ] }">
								<MvASSIGN NAME = "l.license_used" VALUE = "1">
							</MvIF>
							<MvASSIGN NAME = "l.store_pos" VALUE = "{ l.store_pos + 1 }">
						</MvWHILE>
						<MvIF EXPR = "{ NOT l.license_used }">
							<MvASSIGN NAME = "g.Upgrade_ISP_StoreLicense_Count" VALUE = "{ g.Upgrade_ISP_StoreLicense_Count + 1 }">
							<MvASSIGN NAME = "g.Upgrade_ISP_StoreLicense" INDEX = "{ g.Upgrade_ISP_StoreLicense_Count }" VALUE = "{ l.store_license }">
						</MvIF>
					</MvIF>

					<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
					<MvASSIGN NAME = "l.store_license" VALUE = "{ ltrim( rtrim( gettoken( l.isp_data, '|', l.pos  ) ) ) }">
				</MvWHILE>


			</MvIF>
		</MvIMPORT>
	<MvELSE>
		<MvASSIGN NAME = "g.Upgrade_ISP_Defaults" VALUE = "no">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Screen_Upgrade_Wizard" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.ok" VALUE = 1>

	<MvOPEN NAME = "Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
	<MvIF EXPR = "{ MvOPEN_Error }">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00007', MvOPEN_Error ) }">
	<MvELSE>
		<MvOPEN NAME = "Stores" 
				DATABASE = "{ g.MerchantPath $ 'stores.dbf' }" 
				INDEXES = "{ g.MerchantPath $ 'str_id.mvx, ' $ 
							 g.MerchantPath $ 'str_code.mvx, ' $ 
							 g.MerchantPath $ 'str_lic.mvx' }">
		<MvIF EXPR = "{ MvOPEN_Error }">
			<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00008', MvOPEN_Error ) }">
		<MvELSE>
			<MvFILTER NAME = "Stores" FILTER = "{ NOT Stores.d.deleted }">

			<MvIF EXPR = "{ g.Load_Fields }">
				<MvASSIGN NAME = "g.Upgrade_DomainLicense_Original" VALUE = "{ Domain.d.license }">
				<MvASSIGN NAME = "g.Upgrade_DomainLicense_Valid" VALUE = "{ Upgrade_License_Validate( 'DOMAIN', g.Merchant_Version, Domain.d.license ) }">
				<MvASSIGN NAME = "g.Upgrade_DomainLicense_Required" VALUE = "{ NOT g.Upgrade_DomainLicense_Valid }">

				<MvASSIGN NAME = "g.Upgrade_Store_Pos" VALUE = 1>
				<MvASSIGN NAME = "g.Upgrade_Store_New_Pos" VALUE = 1>
				<MvASSIGN NAME = "g.Upgrade_Store_Count" VALUE = 0>

				<MvGO NAME = "Stores" ROW = "top">
				<MvASSIGN NAME = "l.isp_licence_pos" VALUE = "0">
				<MvWHILE EXPR = "{ NOT Stores.d.EOF }">
					<MvIF EXPR = "{ Stores.d.license NE Domain.d.license }">
						<MvASSIGN NAME = "g.Upgrade_Store_Count" VALUE = "{ g.Upgrade_Store_Count + 1 }">
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "ID" VALUE = "{ Stores.d.id }">
						
						<MvIF EXPR = "{ ( g.Upgrade_ISP_Defaults EQ 'yes' ) AND ( l.isp_licence_pos LT g.Upgrade_ISP_StoreLicense_Count ) }">
							<MvASSIGN NAME = "l.isp_licence_pos" VALUE = "{ l.isp_licence_pos + 1 }">
							<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "License" VALUE = "{ g.Upgrade_ISP_StoreLicense[ l.isp_licence_pos ] }">
						<MvELSE>
							<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "License" VALUE = "">
						</MvIF>
						
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "Email" VALUE = "{ Stores.d.email }">

						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "Original_License" VALUE = "{ Stores.d.license }">
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "Valid" VALUE = "{ Upgrade_License_Validate( 'STOREFRONT', g.Merchant_Version, Stores.d.license ) }">
						
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "License_Required" VALUE = "{ NOT int( g.Upgrade_Store[ g.Upgrade_Store_Count ]:Valid ) }">

						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationOwner"			VALUE = "{ Stores.d.owner }">
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationEmail"			VALUE = "{ Stores.d.email }">
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationCompany"		VALUE = "{ Stores.d.company }">
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationAddress"		VALUE = "{ Stores.d.address }">
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationCity"			VALUE = "{ Stores.d.city }">

						<MvIF EXPR = "{ s.miva_language EQ 'de-DE' }">
							<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationStateSelect"	VALUE = "">
							<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationState"			VALUE = "{ Stores.d.state }">
						<MvELSE>
							<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationStateSelect"	VALUE = "{ Stores.d.state }">
							<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationState"			VALUE = "">
						</MvIF>

						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationZip"			VALUE = "{ Stores.d.zip }">
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationCountry"		VALUE = "{ Stores.d.country }">
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationPhone"			VALUE = "{ Stores.d.phone }">
						<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ g.Upgrade_Store_Count }" MEMBER = "RegistrationFax"			VALUE = "{ Stores.d.fax }">
					</MvIF>

					<MvSKIP NAME = "Stores" ROWS = 1>
				</MvWHILE>
				
				<MvASSIGN NAME = "l.upgrade_modules_list" VALUE = "">
				<MvASSIGN NAME = "l.upgrade_modules_list_count" VALUE = "0">
				
				<MvIF EXPR = "{ sexists( g.Version_Path $ 'UPGDMODS.lst' ) AND sfcopy( g.Version_Path $ 'UPGDMODS.lst', 'UPGDMODS.lst' ) }">
					<MvIMPORT 	FILE = "UPGDMODS.lst"
								FIELDS = "l.type, l.module"
								DELIMITER = "|"
								FILTER = "{ toupper( l.type ) EQ 'MERCHANT' }">
						<MvASSIGN NAME = "l.upgrade_modules_list_count" VALUE = "{ l.upgrade_modules_list_count + 1 }">
						<MvASSIGN NAME = "l.upgrade_modules_list" INDEX = "{ l.upgrade_modules_list_count }" VALUE = "{ l.module }">
					</MvIMPORT>
					<MvASSIGN NAME = "l.deleted" VALUE = "{ fdelete( 'UPGDMODS.lst' ) }">
				</MvIF>

				<MvOPEN NAME = "Modules"
						DATABASE = "{ g.MerchantPath $ 'modules.dbf' }"
						INDEXES = "{ g.MerchantPath $ 'mod_id.mvx, ' $
									 g.MerchantPath $ 'mod_code.mvx, ' $
									 g.MerchantPath $ 'mod_type.mvx' }">
				<MvIF EXPR = "{ MvOPEN_Error }">
					<MvDO FILE = "{ g.Library_Filename_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-DTB-00032', MvOPEN_Error ) }">
				<MvELSE>
					<MvFILTER NAME = "Modules" FILTER = "{ NOT Modules.d.deleted }">
					<MvASSIGN NAME = "g.Upgrade_Module_Pos" VALUE = 1>
					<MvASSIGN NAME = "g.Upgrade_Module_New_Pos" VALUE = 1>
					<MvASSIGN NAME = "g.Upgrade_Module_Count" VALUE = 0>

					<MvGO NAME = "Modules" ROW = "top">
					
					<MvIF EXPR = "{ ( g.Upgrade_ISP_Defaults EQ 'yes' ) }">
						<MvASSIGN NAME = "l.default_disposition" VALUE = "{ g.Upgrade_ISP_ModuleVersionCheck_Default }">
					<MvELSE>
						<MvASSIGN NAME = "l.default_disposition" VALUE = "skip">
					</MvIF>
					
					<MvWHILE EXPR = "{ NOT Modules.d.EOF }">

						<MvASSIGN NAME = "l.force_copy" VALUE = "0">
						<MvIF EXPR = "{ l.upgrade_modules_list_count }">
							<MvASSIGN NAME = "l.pos" VALUE = "1">
							
							<MvWHILE EXPR = "{ (l.pos LE l.upgrade_modules_list_count) AND ( NOT l.force_copy ) }">
								<MvIF EXPR = "{ Modules.d.code EQ l.upgrade_modules_list[ l.pos ] }">
									<MvASSIGN NAME = "l.force_copy" VALUE = "1">
								</MvIF>
								<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
							</MvWHILE>
							
						</MvIF>
						
						<MvIF EXPR = "{ l.force_copy }">
							<MvASSIGN NAME = "l.copied"  VALUE = "{ NOT scopy( g.Old_Module_Root $ Modules.d.module, g.Module_Root $ Modules.d.module ) }">
							<MvIF EXPR = "{ l.copied }">
								
							<MvELSE>
								<MvLOCALIZED NAME = "l.copy_error" ID = "MER-UPG-00143">
									<MvLOCALIZED-TOKEN NAME = "path" VALUE = "{ Modules.d.module }">
									<MvLOCALIZED-TEXT LANGUAGE = "en-US">Could not copy the module file '%path%'</MvLOCALIZED-TEXT>
								</MvLOCALIZED>			
								<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Screen_Upgrade_Wizard', l.copy_error ) }">
							</MvIF>
						<MvELSE>
							<MvASSIGN NAME = "l.module_bad_version" VALUE = "0">
							<MvIF EXPR = "{ NOT sexists( g.Module_Root $ Modules.d.module ) }">
								<MvASSIGN NAME = "l.module_bad_version" VALUE = "1">
							</MvIF>

							<MvIF EXPR = "{ l.module_bad_version }">
								<MvASSIGN NAME = "g.Upgrade_Module_Count" VALUE = "{ g.Upgrade_Module_Count + 1 }">
								<MvASSIGN NAME = "g.Upgrade_Module" INDEX = "{ g.Upgrade_Module_Count }" MEMBER = "ID" VALUE = "{ Modules.d.id }">
								<MvASSIGN NAME = "g.Upgrade_Module" INDEX = "{ g.Upgrade_Module_Count  }" MEMBER = "VersionName" VALUE = "{ Modules.d.name }">
								<MvASSIGN NAME = "g.Upgrade_Module" INDEX = "{ Upgrade_Module_Count }" MEMBER = "VersionModule" VALUE = "{ Modules.d.module }">
								<MvDO FILE = "{ g.Old_Module_Root $ Modules.d.module }" NAME = "l.temp_version" VALUE = "{ Module_API_Version() }">
								<MvASSIGN NAME = "g.Upgrade_Module" INDEX = "{ g.Upgrade_Module_Count }" MEMBER = "VersionAPIVersion" VALUE = "{ l.temp_version }">
								<MvASSIGN NAME = "g.Upgrade_Module" INDEX = "{ g.Upgrade_Module_Count }" MEMBER = "VersionDisposition" VALUE = "{ l.default_disposition }">
								<MvASSIGN NAME = "g.Upgrade_Module" INDEX = "{ g.Upgrade_Module_Count }" MEMBER = "VersionNewFile" VALUE = "">
							</MvIF>
						</MvIF>

						<MvSKIP NAME = "Modules" ROWS = 1>
					</MvWHILE>
				</MvIF>

				<MvASSIGN NAME = "g.Upgrade_Login"				VALUE = "">
				<MvASSIGN NAME = "g.Upgrade_Password"			VALUE = "">

				<MvASSIGN NAME = "g.Upgrade_DomainLicense"		VALUE = "">
				<MvASSIGN NAME = "g.Upgrade_DomainLicenseEmail"	VALUE = "{ Domain.d.email }">

				<MvASSIGN NAME = "g.Upgrade_Domain_Owner"		VALUE = "{ Domain.d.owner }">
				<MvASSIGN NAME = "g.Upgrade_Domain_Email"		VALUE = "{ Domain.d.email }">
				<MvASSIGN NAME = "g.Upgrade_Domain_Company"		VALUE = "{ Domain.d.company }">
				<MvASSIGN NAME = "g.Upgrade_Domain_Address"		VALUE = "{ Domain.d.address }">
				<MvASSIGN NAME = "g.Upgrade_Domain_City"		VALUE = "{ Domain.d.city }">
				
				<MvIF EXPR = "{ s.miva_language EQ 'de-DE' }">
					<MvASSIGN NAME = "g.Upgrade_Domain_StateSelect"	VALUE = "">
					<MvASSIGN NAME = "g.Upgrade_Domain_State"		VALUE = "{ Domain.d.state }">
				<MvELSE>
					<MvASSIGN NAME = "g.Upgrade_Domain_StateSelect"	VALUE = "{ Domain.d.state }">
					<MvASSIGN NAME = "g.Upgrade_Domain_State"		VALUE = "">
				</MvIF>

				<MvASSIGN NAME = "g.Upgrade_Domain_Zip"			VALUE = "{ Domain.d.zip }">
				<MvASSIGN NAME = "g.Upgrade_Domain_Country"		VALUE = "{ Domain.d.country }">
				<MvASSIGN NAME = "g.Upgrade_Domain_Phone"		VALUE = "{ Domain.d.phone }">
				<MvASSIGN NAME = "g.Upgrade_Domain_Fax"			VALUE = "{ Domain.d.fax }">
			</MvIF>

			<MvIF EXPR = "{ ( ( g.New_Step GT g.Step ) AND g.Step ) OR
							( ( ( g.New_Step EQ g.Step ) AND g.Step ) AND ( ( g.Upgrade_Store_New_Pos GT g.Upgrade_Store_Pos ) OR ( g.Upgrade_Module_New_Pos GT g.Upgrade_Module_Pos ) ) ) }">
				<MvASSIGN NAME = "l.valid" VALUE = "{ Upgrade_Validate_Step( g.Step ) }">
				<MvIF EXPR = "{ l.valid }">
					<MvASSIGN NAME = "g.Step" VALUE = "{ g.New_Step }">
					<MvASSIGN NAME = "g.Upgrade_Store_Pos" VALUE = "{ g.Upgrade_Store_New_Pos }">
					<MvASSIGN NAME = "g.Upgrade_Module_Pos" VALUE = "{ g.Upgrade_Module_New_Pos }">
				</MvIF>
			<MvELSE>
				<MvIF EXPR = "{ ( g.New_Step AND ( g.New_Step LT g.Step ) ) OR
								( ( g.New_Step AND ( g.New_Step EQ g.Step ) ) AND ( ( g.Upgrade_Store_New_Pos LT g.Upgrade_Store_Pos ) OR ( g.Upgrade_Module_New_Pos LT g.Upgrade_Module_Pos ) ) ) }">
					<MvASSIGN NAME = "g.Step" VALUE = "{ g.New_Step }">
					<MvASSIGN NAME = "g.Upgrade_Store_Pos" VALUE = "{ g.Upgrade_Store_New_Pos }">
					<MvASSIGN NAME = "g.Upgrade_Module_Pos" VALUE = "{ g.Upgrade_Module_New_Pos }">
				</MvIF>
			</MvIF>

			<MvEVAL EXPR = "{ Upgrade_BeginScreen() }">

			<MvIF EXPR = "{ g.Step EQ g.Step_Wizard_Welcome }">
				<MvEVAL EXPR = "{ Upgrade_Wizard_Welcome() }">
			</MvIF>

			<MvHIDE FIELDS = "g.Upgrade_DomainLicense_Original, g.Upgrade_DomainLicense_Valid, g.Upgrade_DomainLicense_Required, g.Upgrade_Store_Pos, g.Upgrade_Store_New_Pos, g.Upgrade_Store_Count">
			
			<MvHIDE FIELDS = "g.Upgrade_ISP_ForceUpgrade,
								g.Upgrade_ISP_Skip_Welcome,
								g.Upgrade_ISP_Skip_LoginPassword,
								g.Upgrade_ISP_Skip_DomainLicense,
								g.Upgrade_ISP_Skip_DomainRegistration,
								g.Upgrade_ISP_Skip_StoreLicense,
								g.Upgrade_ISP_Skip_StoreRegistration,
								g.Upgrade_ISP_Skip_ModuleVersionCheck,
								g.Upgrade_ISP_Skip_Finish,
								g.Upgrade_ISP_ModuleVersionCheck_Default,
								g.Upgrade_ISP_ModuleVersionCheck_CanUpload,
								g.Upgrade_ISP_Domain_License,
								g.Upgrade_ISP_StoreLicense_Count,
								g.Upgrade_ISP_StoreLicense" >

			<MvIF EXPR = "{ g.Step EQ g.Step_Wizard_LoginPassword }">
				<MvEVAL EXPR = "{ Upgrade_Wizard_LoginPassword() }">
			<MvELSE>
				<MvHIDE FIELDS = "g.Upgrade_Login, g.Upgrade_Password">
			</MvIF>

			<MvIF EXPR = "{ g.Step EQ g.Step_Wizard_DomainLicense }">
				<MvEVAL EXPR = "{ Upgrade_Wizard_DomainLicense() }">
			<MvELSE>
				<MvHIDE FIELDS = "g.Upgrade_DomainLicense, g.Upgrade_DomainLicenseEmail">
			</MvIF>

			<MvIF EXPR = "{ g.Step EQ g.Step_Wizard_DomainRegistration }">
				<MvEVAL EXPR = "{ Upgrade_Wizard_DomainRegistration() }">
			<MvELSE>
				<MvHIDE FIELDS = "g.Upgrade_Domain_Owner, g.Upgrade_Domain_Email, g.Upgrade_Domain_Company, g.Upgrade_Domain_Address, g.Upgrade_Domain_City, g.Upgrade_Domain_StateSelect, g.Upgrade_Domain_State, g.Upgrade_Domain_Zip, g.Upgrade_Domain_Country, g.Upgrade_Domain_Phone, g.Upgrade_Domain_Fax">
			</MvIF>


			<MvIF EXPR = "{ g.Step EQ g.Step_Wizard_StoreLicense }">
				<MvEVAL EXPR = "{ Upgrade_Wizard_StoreLicense() }">
			</MvIF>

			<MvIF EXPR = "{ g.Step EQ g.Step_Wizard_StoreRegistration }">
				<MvEVAL EXPR = "{ Upgrade_Wizard_StoreRegistration() }">
			</MvIF>
			
			<MvHIDE FIELDS = "g.Upgrade_Store">

			<MvIF EXPR = "{ g.Step EQ g.Step_Wizard_ModuleVersionCheck }">
				<MvEVAL EXPR = "{ Upgrade_Wizard_ModuleVersionCheck() }">
			</MvIF>

			<MvHIDE FIELDS = "g.Upgrade_Module_Pos, g.Upgrade_Module_New_Pos, g.Upgrade_Module_Count, Upgrade_Module">
			
			<MvIF EXPR = "{ g.Step EQ g.Step_Wizard_Finish }">
				<MvEVAL EXPR = "{ Upgrade_Wizard_Finish() }">
			</MvIF>

			<MvEVAL EXPR = "{ Upgrade_EndScreen() }">
			<MvCLOSE NAME = "Stores">
		</MvIF>

		<MvCLOSE NAME = "Domain">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = "{ l.ok }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Wizard_Welcome"  STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<TABLE BORDER = 0 CELLPADDING = 2 CELLSPACING = 0 WIDTH = "100%">
	<TR><TD VALIGN = "top" ALIGN = "left" COLSPAN = 2>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00060">
			<MvLOCALIZED-TOKEN NAME = "version" VALUE = "{ g.Merchant_Version }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">
				<P>
				Welcome to the Miva Merchant Upgrade Wizard. This wizard will help you upgrade to version <B>%version%</B> of Miva Merchant.
				</P>

				<P>
				Before beginning the upgrade process, please take the time to make a backup copy of your installation.  If you do not know how to backup your data, please contact Miva Technical Support.
				</P>

				<P>
				To begin, press the <B>Next</B> button.
				</P>
			</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
				<P>
				Herzlich willkommen beim Miva Merchant Upgrade-Assistenten. Dieser Assistent wird Sie beim Upgrade auf die Version <B>%version%</B> von Miva Merchant unterst�tzen.
				</P>
				
				<P>
				Bevor Sie jedoch mit dem Upgrade beginnen, nehmen Sie sich bitte Zeit, eine Sicherungskopie Ihrer Installierung anzulegen. Wenn Sie nicht wissen, wie Sie Ihre Daten sichern k�nnen, setzen Sie sich bitte mit der technischen Beratung von Miva in Verbindung.
				</P>
				
				<P>
				Klicken Sie auf "<B>Weiter</B>", um den Vorgang zu beginnen.
				</P>
			</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD VALIGN = "bottom" ALIGN = "left">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Previous() }">
	</TD><TD VALIGN = "bottom" ALIGN = "right">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Next() }">
	</TD></TR>
	</TABLE>
</MvFUNCTION>

<MvCOMMENT>
|
| Login/Password
| *********************************************************************************************
|
</MvCOMMENT>

<MvFUNCTION NAME = "Upgrade_Validate_Step_LoginPassword"  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "g.Upgrade_Login" VALUE = "{ ltrim( rtrim( g.Upgrade_Login ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Password" VALUE = "{ ltrim( rtrim( g.Upgrade_Password ) ) }">

	<MvIF EXPR = "{ len( g.Upgrade_Login ) EQ 0 }">
		<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00061">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify a username.</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie einen Benutzernamen an.</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_LoginPassword, 'Upgrade_Login', l.error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_Password ) EQ 0 }">
		<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00062">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify a password.</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie ein Passwort an.</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_LoginPassword, 'Upgrade_Password', l.error ) }">
	</MvIF>
	
	<MvOPEN NAME = "Upgrade_Users" DATABASE = "{ g.MerchantPath $ 'users.dbf' }" INDEXES = "{ g.MerchantPath $ 'usr_name.mvx' }">
	<MvIF EXPR = "{ NOT MvOPEN_Error }">
		<MvASSIGN NAME = "l.valid" VALUE = 0>

		<MvFIND NAME = "Upgrade_Users" VALUE = "{ toupper( g.Upgrade_Login ) }" EXACT>
		<MvIF EXPR = "{ NOT Upgrade_Users.d.EOF }">
			<MvIF EXPR = "{ s.version LT 3.9026 }">
				<MvIF EXPR = "{ substring( Upgrade_Users.d.password, 1, 3 ) EQ '$1$' }">
					<MvASSIGN NAME = "l.salt" VALUE = "{ substring( Upgrade_Users.d.password, 4, 2 ) }">
				<MvELSE>
					<MvASSIGN NAME = "l.salt" VALUE = "{ substring( Upgrade_Users.d.password, 1, 2 ) }">
				</MvIF>
			<MvELSE>
				<MvASSIGN NAME = "l.salt" VALUE = "{ Upgrade_Users.d.password }">
			</MvIF>

			<MvIF EXPR = "{ ( g.Upgrade_Password CRYPT l.salt ) EQ Upgrade_Users.d.password }">
				<MvIF EXPR = "{ Upgrade_Users.d.admin }">
					<MvASSIGN NAME = "l.valid" VALUE = 1>
				</MvIF>
			</MvIF>
		</MvIF>

		<MvIF EXPR = "{ NOT l.valid }">
			<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00063">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Invalid username/password, or the user specified does not have administrative privileges.</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Ung�ltiger Benutzername/ung�ltiges Passwort oder der angegebene Benutzer verf�gt nicht �ber administrative Rechte.</MvLOCALIZED-TEXT>
			</MvLOCALIZED>

			<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_LoginPassword, 'Upgrade_Login', l.error ) }">
		</MvIF>

		<MvCLOSE NAME = "Upgrade_Users">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Wizard_LoginPassword"  STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<TABLE BORDER = 0 CELLPADDING = 2 CELLSPACING = 0 WIDTH = "100%">
	<TR><TD VALIGN = "top" ALIGN = "left" COLSPAN = 2>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00064">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">
				<P>
				To continue the upgrade process, you must enter the username and password of a Miva Merchant user account with administrative privileges.
				</P>

				<P>
				Please enter your Login and Password below.
				</P>
			</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
				<P>
				Um den Upgrade-Vorgang fortzusetzen, m�ssen Sie den Benutzernamen und das Passwort eines Miva Merchant Benutzerkontos angeben, das �ber administrative Rechte verf�gt.
				</P>
				
				<P>
				Bitte geben Sie Ihre Anmeldung und Ihr Passwort nachstehend ein.
				</P>
			</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00065">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Login:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Anmeldung:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Login" VALUE = "{ encodeentities( g.Upgrade_Login ) }">
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00066">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Password:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Passwort:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "password" SIZE = 30 NAME = "Upgrade_Password" VALUE = "{ encodeentities( g.Upgrade_Password ) }">
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD VALIGN = "bottom" ALIGN = "left">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Previous() }">
	</TD><TD VALIGN = "bottom" ALIGN = "right">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Next() }">
	</TD></TR>
	</TABLE>
</MvFUNCTION>

<MvCOMMENT>
|
| Domain License
| *********************************************************************************************
|
</MvCOMMENT>

<MvFUNCTION NAME = "Upgrade_Validate_Step_DomainLicense"  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "g.Upgrade_DomainLicense" VALUE = "{ ltrim( rtrim( g.Upgrade_DomainLicense ) ) }">
	<MvASSIGN NAME = "g.Upgrade_DomainLicenseEmail" VALUE = "{ ltrim( rtrim( g.Upgrade_DomainLicenseEmail ) ) }">

	<MvIF EXPR = "{ len( g.Upgrade_DomainLicense ) EQ 0 }">
		<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00067">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter a domain upgrade license</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Domain-Upgrade-Lizenz ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainLicense, 'Upgrade_DomainLicense', l.error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_DomainLicenseEmail ) EQ 0 }">
		<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00068">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the email address used to register your prior version of Miva Merchant</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Geben Sie bitte die bei der Registrierung der vorherigen Version von Miva Merchant verwendete E-Mail-Adresse ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainLicense, 'Upgrade_DomainLicense', l.error ) }">
	</MvIF>

	<MvIF EXPR = "{ NOT g.Upgrade_DomainLicense_Valid }">
		<MvIF EXPR = "{ NOT Upgrade_License_Activate( 'DOMAIN', Domain.d.license, g.Upgrade_DomainLicenseEmail, g.Upgrade_DomainLicense ) }">
			<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainLicense, 'Upgrade_DomainLicense', g.Error_Code $ ': ' $ g.Error_Message ) }">
		<MvELSE>
			<MvASSIGN NAME = "g.Upgrade_DomainLicense_Valid" VALUE = 1>

			<MvPRIMARY NAME = "Stores" INDEX = "{ g.MerchantPath $ 'str_lic.mvx' }">
			<MvFIND NAME = "Stores" VALUE = "{ Domain.d.license }" EXACT>
			<MvIF EXPR = "{ NOT Stores.d.EOF }">
				<MvASSIGN NAME = "Stores.d.license" VALUE = "{ g.Upgrade_DomainLicense }">
				<MvUPDATE NAME = "Stores">
			</MvIF>

			<MvASSIGN NAME = "Domain.d.license" VALUE = "{ g.Upgrade_DomainLicense }">
			<MvUPDATE NAME = "Domain">
		</MvIF>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Wizard_DomainLicense"  STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<TABLE BORDER = 0 CELLPADDING = 2 CELLSPACING = 0 WIDTH = "100%">
	<TR><TD VALIGN = "top" ALIGN = "left" COLSPAN = 2>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00069">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">
				<P>
				Upgrading this installation of Miva Merchant requires a <B>Miva Merchant Domain Upgrade License</B>.  If you do not have a domain upgrade license, one may be obtained from the <A TARGET = "_new" HREF = "http://www.miva.com/purchase/Merchant2/merchant.mv">Miva General Store</A>.
				</P>

				<P>
				Additionally, you must provide the Email address used to register the prior version of Miva Merchant.
				</P>
			</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
				<P>
				Der Upgrade dieser Installierung von Miva Merchant erfordert eine <B>Miva Merchant Domain-Upgrade-Lizenz</B>. Wenn Sie noch keine Domain-Upgrade-Lizenz haben, k�nnen Sie diese im <A TARGET = "_new" HREF = "http://www.miva.com/purchase/Merchant2/merchant.mv">Miva General Store</A>erhalten.
				</P>
				
				<P>
				Dar�ber hinaus m�ssen Sie die E-Mail-Adresse angeben, die Sie bei der Registrierung der vorherigen Version von Miva Merchant angegeben hatten.
				</P>
			</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00070">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Existing Domain License:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Jetzige Domain-Lizenz:</B></MvLOCALIZED-TEXT>

		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvEVAL EXPR = "{ g.Upgrade_DomainLicense_Original }">
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00071">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Domain Upgrade License:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Domain-Upgrade-Lizenz:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvIF EXPR = "{ g.Upgrade_DomainLicense_Valid }">
			<INPUT TYPE = "hidden" NAME = "Upgrade_DomainLicense" VALUE = "{ encodeentities( g.Upgrade_DomainLicense) }">
			<MvEVAL EXPR = "{ g.Upgrade_DomainLicense }">
		<MvELSE>
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_DomainLicense" VALUE = "{ encodeentities( g.Upgrade_DomainLicense ) }">
		</MvIF>
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00072">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Email Address:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>E-Mail Adresse:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvIF EXPR = "{ g.Upgrade_DomainLicense_Valid }">
			<INPUT TYPE = "hidden" NAME = "Upgrade_DomainLicenseEmail" VALUE = "{ encodeentities( g.Upgrade_DomainLicenseEmail ) }">
			<MvEVAL EXPR = "{ g.Upgrade_DomainLicenseEmail }">
		<MvELSE>
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_DomainLicenseEmail" VALUE = "{ encodeentities( g.Upgrade_DomainLicenseEmail ) }">
		</MvIF>
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD VALIGN = "bottom" ALIGN = "left">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Previous() }">
	</TD><TD VALIGN = "bottom" ALIGN = "right">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Next() }">
	</TD></TR>
	</TABLE>
</MvFUNCTION>

<MvCOMMENT>
|
| Domain Registration
| *********************************************************************************************
|
</MvCOMMENT>

<MvFUNCTION NAME = "Upgrade_Validate_Step_DomainRegistration"  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "g.Upgrade_Domain_Owner" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Owner ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Email" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Email ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Company" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Company ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Address" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Address ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_City" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_City ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_StateSelect" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_StateSelect ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_State" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_State ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Zip" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Zip ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Country" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Country ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Phone" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Phone ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Domain_Fax" VALUE = "{ ltrim( rtrim( g.Upgrade_Domain_Fax ) ) }">

	<MvIF EXPR = "{ len( g.Upgrade_Domain_Owner ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00073">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the name of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie den Namen des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Owner', l.field_error ) }">
	</MvIF>

	<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.ok" VALUE = "{ Validate_Email( g.Upgrade_Domain_Email ) }">
	<MvIF EXPR = "{ NOT l.ok }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00074">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the email address of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die E-Mail-Adresse des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Email', l.field_error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_Domain_Address ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00075">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the address of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Strasse des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Address', l.field_error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_Domain_City ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00076">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the city of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie den Wohnort des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_City', l.field_error ) }">
	</MvIF>

	<MvASSIGN NAME = "g.Upgrade_Domain_Use_State" VALUE = "{ g.Upgrade_Domain_State }">
	<MvIF EXPR = "{ len( g.Upgrade_Domain_Use_State ) EQ 0 }">
		<MvASSIGN NAME = "g.Upgrade_Domain_Use_State" VALUE = "{ g.Upgrade_Domain_StateSelect }">
	</MvIF>

	<MvIF EXPR = "{ ( len( g.Upgrade_Domain_Use_State ) EQ 0 ) AND ( g.Upgrade_Domain_Country EQ 'US' ) }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00077">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the state/province of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie das Bundesland des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_State', l.field_error ) }">
	</MvIF>

	<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.valid" VALUE = "{ Validate_Zip( g.Upgrade_Domain_Zip, g.Upgrade_Domain_Country ) }">		
	<MvIF EXPR = "{ NOT l.valid }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00078">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the Zip/Postal code of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Postleitzahl f�r den Wohnort des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Zip', l.field_error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_Domain_Country ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-SET-00045">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please select the country of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte w�hlen Sie das Land des Domain-Administrators</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Country', l.field_error ) }">
	</MvIF>

	<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.valid" VALUE = "{ Validate_Phone( g.Upgrade_Domain_Phone, g.Upgrade_Domain_Country ) }">
	<MvIF EXPR = "{ NOT l.valid }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00079">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the phone number of the Domain Administrator</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Telefonnummer des Domain-Administrators ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_DomainRegistration, 'Upgrade_Domain_Phone', l.field_error ) }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Wizard_DomainRegistration" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<TABLE BORDER = 0 CELLPADDING = 2 CELLSPACING = 0 WIDTH = "100%">
	<TR><TD VALIGN = "top" ALIGN = "left" COLSPAN = 2>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00080">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">
				<P>
				The following information will be used to register your Domain Upgrade License.  Your current domain registration data is shown below.  Please review it for accuracy and completeness.
				</P>
			</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
				<P>
				Die folgenden Informationen werden bei der Registrierung Ihrer Domain-Upgrade-Lizenz verwendet. Die derzeitigen Daten Ihrer Domain-Registrierung sind nachstehend aufgef�hrt. Bitte �berpr�fen Sie, ob diese richtig und vollst�ndig sind.
				</P>
			</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00081">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Owner:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Besitzer:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_Owner" VALUE = "{ encodeentities( g.Upgrade_Domain_Owner ) }">
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00082">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Email Address:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>E-Mail Adresse:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_Email" VALUE = "{ encodeentities( g.Upgrade_Domain_Email ) }">
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00083">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Company:</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Firma:</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_Company" VALUE = "{ encodeentities( g.Upgrade_Domain_Company ) }">
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00084">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Address:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Strasse:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_Address" VALUE = "{ encodeentities( g.Upgrade_Domain_Address ) }">
		</FONT>
	</TD></TR>

	<MvIF EXPR = "{ s.miva_language EQ 'de-DE' }"> 
		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00085">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Zip/Postal Code:</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Postleitzahl:</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_Zip" VALUE = "{ encodeentities( g.Upgrade_Domain_Zip ) }">
			</FONT>
		</TD></TR>

		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00086">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>City:</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Ort:</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_City" VALUE = "{ encodeentities( g.Upgrade_Domain_City ) }">
			</FONT>
		</TD></TR>

		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00087">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">State/Province:</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bundesland:</MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_State" VALUE = "{ encodeentities( g.Upgrade_Domain_State ) }">
			</FONT>
		</TD></TR>
	<MvELSE>
		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00088">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>City:</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Ort:</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_City" VALUE = "{ encodeentities( g.Upgrade_Domain_City ) }">
			</FONT>
		</TD></TR>
		
		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00089">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>State/Province:</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Bundesland:</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvEVAL EXPR = "{ InitializeStateArray() }">
			<SELECT NAME = "Upgrade_Domain_StateSelect">
			<MvASSIGN NAME = "l.found" VALUE = 0>
			<MvASSIGN NAME = "l.state" VALUE = 1>
			<MvWHILE EXPR = "{ l.state LT g.State_Count }">
				<MvIF EXPR = "{ g.State[ l.state ]:Code EQ g.Upgrade_Domain_StateSelect }">
					<OPTION VALUE = "{ encodeentities( g.State[ l.state ]:Code ) }" SELECTED><MvEVAL EXPR = "{ g.State[ l.state ]:Name }"></OPTION>
					<MvASSIGN NAME = "l.found" VALUE = 1>
				<MvELSE>
					<OPTION VALUE = "{ encodeentities( g.State[ l.state ]:Code ) }"><MvEVAL EXPR = "{ g.State[ l.state ]:Name }"></OPTION>
				</MvIF>
				<MvASSIGN NAME = "l.state" VALUE = "{ l.state + 1 }">
			</MvWHILE>

			<MvIF EXPR = "{ NOT l.found }">
				<MvASSIGN NAME = "g.Upgrade_Domain_State" VALUE = "{ g.Upgrade_Domain_StateSelect }">
			</MvIF>
			</SELECT>
			</FONT>
		</TD></TR>

		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00090">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Other State/Province:</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Andere Bundesl�nder:</MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_State" VALUE = "{ encodeentities( g.Upgrade_Domain_State ) }">
			</FONT>
		</TD></TR>

		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00091">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Zip/Postal Code:</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Postleitzahl:</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_Zip" VALUE = "{ encodeentities( g.Upgrade_Domain_Zip ) }">
			</FONT>
		</TD></TR>
	</MvIF>

	<TR><TD NOWRAP> 
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00092">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Country:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Land:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>						
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvEVAL EXPR = "{ InitializeCountryArray() }">

		<SELECT NAME = "Upgrade_Domain_Country">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ DrawOption_SelectOne() }">
		<MvASSIGN NAME = "l.country" VALUE = 1>
		<MvWHILE EXPR = "{ l.country LT g.Country_Count }">
			<MvIF EXPR = "{ g.Country[ l.country ]:Alpha EQ g.Upgrade_Domain_Country }">
				<OPTION VALUE = "{ g.Country[ l.country ]:Alpha }" SELECTED><MvEVAL EXPR = "{ g.Country[ l.country ]:Name }"></OPTION>
			<MvELSE>
				<OPTION VALUE = "{ g.Country[ l.country ]:Alpha }"><MvEVAL EXPR = "{ g.Country[ l.country ]:Name }"></OPTION>
			</MvIF>
			<MvASSIGN NAME = "l.country" VALUE = "{ l.country + 1 }">
		</MvWHILE>
		</SELECT>
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00093">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Phone:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Telefon:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>						
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_Phone" VALUE = "{ encodeentities( g.Upgrade_Domain_Phone ) }">
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00094">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Fax:</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Fax:</MvLOCALIZED-TEXT>
		</MvLOCALIZED>						
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Domain_Fax" VALUE = "{ encodeentities( g.Upgrade_Domain_Fax ) }">
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD VALIGN = "bottom" ALIGN = "left">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Previous() }">
	</TD><TD VALIGN = "bottom" ALIGN = "right">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Next() }">
	</TD></TR>
	</TABLE>
</MvFUNCTION>

<MvCOMMENT>
|
| Store License
| *********************************************************************************************
|
</MvCOMMENT>

<MvFUNCTION NAME = "Upgrade_Validate_Step_StoreLicense"  STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Upgrade_Store_Pos ) }">

	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "License" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_License ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "Email" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_Email ) ) }">

	<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:License ) EQ 0 }">
		<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00095">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter a store upgrade license</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Laden-Upgrade-Lizenz ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreLicense, 'Upgrade_Store_Current_License', l.error ) }">
	</MvIF>

	<MvASSIGN NAME = "l.other_pos" VALUE = "1">
	<MvWHILE EXPR = "{ l.other_pos LT l.pos }">

		<MvIF EXPR = "{ ( g.Upgrade_Store[ l.pos ]:License EQ g.Upgrade_Store[ l.other_pos ]:License ) OR ( len( g.Upgrade_Store[ l.other_pos ]:Original_License ) AND ( g.Upgrade_Store[ l.pos ]:License EQ g.Upgrade_Store[ l.other_pos ]:Original_License ) ) }">
			<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00144">
				<MvLOCALIZED-TOKEN NAME = "license" VALUE = "{ g.Upgrade_Store[ l.pos ]:License }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Sorry, you are already using license number '%license%' for another storefront. Please check your records and try again.</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Leider benutzen Sie bereits die Lizenznummer '%license%' f�r eine andere Store Front. Bitte �berpr�fen Sie Ihre Unterlagen, und versuchen Sie es noch einmal.</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
			<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreLicense, 'Upgrade_Store_Current_License', l.error ) }">
		</MvIF>
		<MvASSIGN NAME = "l.other_pos" VALUE = "{ l.other_pos + 1 }">
	</MvWHILE>

	<MvIF EXPR = "{ len( g.Upgrade_Store_Current_Email ) EQ 0 }">
		<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00096">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please enter the email address used to register this store in the prior version of Miva Merchant</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Geben Sie bitte die bei der Registrierung dieses Ladens bei der vorherigen Version von Miva Merchant verwendete E-Mail-Adresse ein</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreLicense, 'Upgrade_Store_Current_Email', l.error ) }">
	</MvIF>

	<MvIF EXPR = "{ NOT g.Upgrade_Store[ l.pos ]:Valid }">
		<MvFIND NAME = "Stores" VALUE = "{ g.Upgrade_Store[ l.pos ]:ID }" EXACT>
		<MvIF EXPR = "{ NOT Stores.d.EOF }">
			<MvIF EXPR = "{ NOT Upgrade_License_Activate( 'STOREFRONT', Stores.d.license, g.Upgrade_Store[ l.pos ]:Email, g.Upgrade_Store[ l.pos ]:License ) }">
				<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreLicense, 'Upgrade_Store_Current_License', g.Error_Code $ ': ' $ g.Error_Message ) }">
			<MvELSE>
				<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "Valid" VALUE = 1>

				<MvASSIGN NAME = "Stores.d.license" VALUE = "{ g.Upgrade_Store[ l.pos ]:License }">
				<MvUPDATE NAME = "Stores">
			</MvIF>
		</MvIF>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Wizard_StoreLicense"  STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<SCRIPT LANGUAGE = "JavaScript">
<!--
function Upgrade_StoreLicense_Previous( step )
{
	document.forms[ Screen ].elements[ 'Upgrade_Store_New_Pos' ].value = parseInt( document.forms[ Screen ].elements[ 'Upgrade_Store_Pos' ].value ) - 1;
	document.forms[ Screen ].elements[ 'New_Step' ].value = step;
	document.forms[ Screen ].submit();	
}
//-->
	</SCRIPT>

	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Upgrade_Store_Pos ) }">
	
	<MvASSIGN NAME = "l.valid" VALUE = "{ g.Upgrade_Store[ l.pos ]:Valid }">

	<MvFIND NAME = "Stores" VALUE = "{ g.Upgrade_Store[ l.pos ]:ID }" EXACT>

	<TABLE BORDER = 0 CELLPADDING = 2 CELLSPACING = 0 WIDTH = "100%">
	<TR><TD VALIGN = "top" ALIGN = "left" COLSPAN = 2>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00097">
			<MvLOCALIZED-TOKEN NAME = "store_name" VALUE = "{ Stores.d.name }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">
				<P>
				Upgrading the store <B>%store_name%</B> requires a <B>Miva Merchant Additional Store Upgrade License</B>.  Each storefront in your installation of Miva Merchant will require a different store upgrade license.
				If you do not have a store upgrade license, one may be obtained from the Miva General Store.
				</P>

				<P>
				Additionally, you must provide the Email address used to register this store in the prior version of Miva Merchant.
				</P>
			</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
				<P>
				F�r den Upgrade des Ladens "<B>%store_name%</B>" ist eine <B>Miva Merchant Domain-Upgrade-Lizenz</B> erforderlich. F�r jede Ladenfront in Ihrer Miva Merchant-Installierung ist eine andere Laden-Upgrade-Lizenz erforderlich. Wenn Sie noch keine Laden-Upgrade-Lizenz haben, k�nnen Sie diese im Miva General Store erhalten.
				</P>
				
				<P>
				Dar�ber hinaus m�ssen Sie die E-Mail-Adresse angeben, die Sie bei der Registrierung der vorherigen Version von Miva Merchant angegeben hatten.
				</P>
			</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00098">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Existing Store License:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Jetzige Laden-Lizenz:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvEVAL EXPR = "{ g.Upgrade_Store[ l.pos ]:Original_License }">
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00099">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Store Upgrade License:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Laden-Upgrade-Lizenz:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvIF EXPR = "{ l.valid }">
			<MvEVAL EXPR = "{ g.Upgrade_Store[ l.pos ]:License }">
		<MvELSE>
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_License" VALUE = "{ g.Upgrade_Store[ l.pos ]:License }">
		</MvIF>
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00100">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Email Address:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>E-Mail Adresse:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvIF EXPR = "{ l.valid }">
			<MvEVAL EXPR = "{ g.Upgrade_Store[ l.pos ]:Email }">
		<MvELSE>
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_Email" VALUE = "{ g.Upgrade_Store[ l.pos ]:Email }">
		</MvIF>
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD VALIGN = "bottom" ALIGN = "left">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Previous() }">
	</TD><TD VALIGN = "bottom" ALIGN = "right">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Next() }">
	</TD></TR>
	</TABLE>
</MvFUNCTION>

<MvCOMMENT>
|
| Store Registration
| *********************************************************************************************
|
</MvCOMMENT>

<MvFUNCTION NAME = "Upgrade_Validate_Step_StoreRegistration"  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Upgrade_Store_Pos ) }">

	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationOwner" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_RegistrationOwner ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationEmail" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_RegistrationEmail ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationCompany" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_RegistrationCompany ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationAddress" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_RegistrationAddress ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationCity" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_RegistrationCity ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationStateSelect" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_RegistrationStateSelect ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationState" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_RegistrationState ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationZip" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_RegistrationZip ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationCountry" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_RegistrationCountry ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationPhone" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_RegistrationPhone ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationFax" VALUE = "{ ltrim( rtrim( g.Upgrade_Store_Current_RegistrationFax ) ) }">

	<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:RegistrationOwner ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00101">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's name</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie den Namen des Ladenbesitzers an</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreRegistration, 'Upgrade_Store_Current_RegistrationOwner', l.field_error ) }">
	</MvIF>
	
	<MvASSIGN NAME = "l.temp" VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationEmail }">
	<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.ok" VALUE = "{ Validate_Email( l.temp ) }">
	<MvIF EXPR = "{ NOT l.ok }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00102">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's email address</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die E-Mail-Adresse des Ladenbesitzers an</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreRegistration, 'Upgrade_Store_Current_RegistrationEmail', l.field_error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:RegistrationAddress ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00103">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's address</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Strasse des Ladenbesitzers an</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreRegistration, 'Upgrade_Store_Current_RegistrationAddress', l.field_error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:RegistrationCity ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00104">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's city</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie den Ort des Ladenbesitzers an</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreRegistration, 'Upgrade_Store_Current_RegistrationCity', l.field_error ) }">
	</MvIF>

	<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "Registration_Use_State" VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationState }">
	<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:Registration_Use_State ) EQ 0 }">
		<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "Registration_Use_State" VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationStateSelect }">
	</MvIF>

	<MvIF EXPR = "{ ( len( g.Upgrade_Store[ l.pos ]:Registration_Use_State ) EQ 0 ) AND ( g.Upgrade_Store[ l.pos ]:RegistrationCountry EQ 'US' ) }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00105">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's State/Province</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie das Bundesland des Ladenbesitzers an</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreRegistration, 'Upgrade_Store_Current_RegistrationState', l.field_error ) }">
	</MvIF>

	<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.valid" VALUE = "{ Validate_Zip( g.Upgrade_Store[ l.pos ]:RegistrationZip,g.Upgrade_Store[ l.pos ]:RegistrationCountry ) }">		
	<MvIF EXPR = "{ NOT l.valid }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00106">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's Zip/Postal code</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Postleitzahl des Ladenbesitzers an</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreRegistration, 'Upgrade_Store_Current_RegistrationZip', l.field_error ) }">
	</MvIF>

	<MvIF EXPR = "{ len( g.Upgrade_Store[ l.pos ]:RegistrationCountry ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-SET-00045">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's country</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie das Land des Ladenbesitzers an</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreRegistration, '', l.field_error ) }">
	</MvIF>

	<MvDO FILE = "{ g.Upgrade_Filename_Admin }" NAME = "l.valid" VALUE = "{ Validate_Phone( g.Upgrade_Store[ l.pos ]:RegistrationPhone, g.Upgrade_Store[ l.pos ]:RegistrationCountry ) }">
	<MvIF EXPR = "{ NOT l.valid }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00107">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify the store owner's phone number</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bitte geben Sie die Telefonnummer des Ladenbesitzers an</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_StoreRegistration, 'Upgrade_Store_Current_RegistrationPhone', l.field_error ) }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Wizard_StoreRegistration"  STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Upgrade_Store_Pos ) }">

	<MvASSIGN NAME = "l.reg_owner"		VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationOwner }">
	<MvASSIGN NAME = "l.reg_email"		VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationEmail }">
	<MvASSIGN NAME = "l.reg_company"	VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationCompany }">
	<MvASSIGN NAME = "l.reg_address"	VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationAddress }">
	<MvASSIGN NAME = "l.reg_city"		VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationCity }">
	<MvASSIGN NAME = "l.reg_statesel"	VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationStateSelect }">
	<MvASSIGN NAME = "l.reg_state"		VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationState }">
	<MvASSIGN NAME = "l.reg_zip"		VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationZip }">
	<MvASSIGN NAME = "l.reg_country"	VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationCountry }">
	<MvASSIGN NAME = "l.reg_phone"		VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationPhone }">
	<MvASSIGN NAME = "l.reg_fax"		VALUE = "{ g.Upgrade_Store[ l.pos ]:RegistrationFax }">

	<SCRIPT LANGUAGE = "JavaScript">
<!--
function Upgrade_StoreRegistration_Previous( step )
{
	document.forms[ Screen ].elements[ 'Upgrade_Store_New_Pos' ].value = parseInt( document.forms[ Screen ].elements[ 'Upgrade_Store_Pos' ].value ) - 1;
	document.forms[ Screen ].elements[ 'New_Step' ].value = step;
	document.forms[ Screen ].submit();	
}

function Upgrade_StoreRegistration_Next( step )
{
	document.forms[ Screen ].elements[ 'Upgrade_Store_New_Pos' ].value = parseInt( document.forms[ Screen ].elements[ 'Upgrade_Store_Pos' ].value ) + 1;
	document.forms[ Screen ].elements[ 'New_Step' ].value = step;
	document.forms[ Screen ].submit();	
}
//-->
	</SCRIPT>

	<MvFIND NAME = "Stores" VALUE = "{ g.Upgrade_Store[ l.pos ]:ID }" EXACT>

	<TABLE BORDER = 0 CELLPADDING = 2 CELLSPACING = 0 WIDTH = "100%">
	<TR><TD VALIGN = "top" ALIGN = "left" COLSPAN = 2>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00108">
			<MvLOCALIZED-TOKEN NAME = "store_name" VALUE = "{ Stores.d.name }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">
				<P>
				The following information will be used to register your Store Upgrade License for <B>%store_name%</B>.  Your current store registration data is shown below.  Please review it for accuracy and completeness.
				</P>
			</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
				<P>
				Die folgenden Informationen werden zur Registrierung Ihrer Laden-Upgrade-Lizenz f�r <B>%store_name%</B> verwendet. Die derzeitigen Daten Ihrer Laden-Registrierung sind nachstehend aufgef�hrt. Bitte �berpr�fen Sie, ob diese richtig und vollst�ndig sind.
				</P>
			</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00109">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Owner:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Besitzer:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationOwner" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationOwner) }">
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00110">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Email Address:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>E-Mail Adresse:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationEmail" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationEmail ) }">
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00111">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Company:</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Firma:</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationCompany" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationCompany ) }">
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00112">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Address:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Strasse:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationAddress" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationAddress ) }">
		</FONT>
	</TD></TR>

	<MvIF EXPR = "{ s.miva_language EQ 'de-DE' }"> 
		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00113">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Zip/Postal Code:</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Postleitzahl:</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationZip" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationZip ) }">
			</FONT>
		</TD></TR>

		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00114">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>City:</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Ort:</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationCity" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationCity ) }">
			</FONT>
		</TD></TR>

		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00115">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">State/Province:</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bundesland:</MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationState" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationState )">
			</FONT>
		</TD></TR>
	<MvELSE>
		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00116">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>City:</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Ort:</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationCity" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationCity ) }">
			</FONT>
		</TD></TR>
		
		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00117">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>State/Province:</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Bundesland:</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvEVAL EXPR = "{ InitializeStateArray() }">

			<SELECT NAME = "Upgrade_Store_Current_RegistrationStateSelect">
			<MvASSIGN NAME = "l.found" VALUE = 0>
			<MvASSIGN NAME = "l.state" VALUE = 1>
			<MvWHILE EXPR = "{ l.state LT g.State_Count }">
				<MvIF EXPR = "{ g.State[ l.state ]:Code EQ g.Upgrade_Store[ l.pos ]:RegistrationStateSelect }">
					<OPTION VALUE = "{ encodeentities( g.State[ l.state ]:Code ) }" SELECTED><MvEVAL EXPR = "{ g.State[ l.state ]:Name }"></OPTION>
					<MvASSIGN NAME = "l.found" VALUE = 1>
				<MvELSE>
					<OPTION VALUE = "{ encodeentities( g.State[ l.state ]:Code ) }"><MvEVAL EXPR = "{ g.State[ l.state ]:Name }"></OPTION>
				</MvIF>

				<MvASSIGN NAME = "l.state" VALUE = "{ l.state + 1 }">
			</MvWHILE>

			<MvIF EXPR = "{ NOT l.found }">
				<MvASSIGN NAME = "g.Upgrade_Store" INDEX = "{ l.pos }" MEMBER = "RegistrationState" VALUE = "{ g.Upgrade_Store }" INDEX = "{ l.pos }" MEMBER = "RegistrationStateSelect">
			</MvIF>
			</SELECT>
			</FONT>
		</TD></TR>

		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00118">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Other State/Province:</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Andere Bundesl�nder:</MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationState" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationState ) }">
			</FONT>
		</TD></TR>

		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-UPG-00119">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Zip/Postal Code:</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Postleitzahl:</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationZip" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationZip ) }">
			</FONT>
		</TD></TR>
	</MvIF>

	<TR><TD NOWRAP> 
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00120">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Country:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Land:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>						
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvEVAL EXPR = "{ InitializeCountryArray() }">

		<SELECT NAME = "Upgrade_Store_Current_RegistrationCountry">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ DrawOption_SelectOne() }">
		<MvASSIGN NAME = "l.country" VALUE = 1>
		<MvWHILE EXPR = "{ l.country LT g.Country_Count }">
			<MvIF EXPR = "{ g.Country[ l.country ]:Alpha EQ g.Upgrade_Store[ l.pos ]:RegistrationCountry }">
				<OPTION VALUE = "{ g.Country[ l.country ]:Alpha }" SELECTED><MvEVAL EXPR = "{ g.Country[ l.country ]:Name }"></OPTION>
			<MvELSE>
				<OPTION VALUE = "{ g.Country[ l.country ]:Alpha }"><MvEVAL EXPR = "{ g.Country[ l.country ]:Name }"></OPTION>
			</MvIF>
			<MvASSIGN NAME = "l.country" VALUE = "{ l.country + 1 }">
		</MvWHILE>
		</SELECT>
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00121">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Phone:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Telefon:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>						
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationPhone" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationPhone ) }">
		</FONT>
	</TD></TR>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00122">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Fax:</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Fax:</MvLOCALIZED-TEXT>
		</MvLOCALIZED>						
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Store_Current_RegistrationFax" VALUE = "{ encodeentities( g.Upgrade_Store[ l.pos ]:RegistrationFax ) }">
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD VALIGN = "bottom" ALIGN = "left">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Previous() }">
	</TD><TD VALIGN = "bottom" ALIGN = "right">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Next() }">
	</TD></TR>
	</TABLE>

</MvFUNCTION>

<MvCOMMENT>
|
| Module Version Check
| *********************************************************************************************
|
</MvCOMMENT>

<MvFUNCTION NAME = "Upgrade_Validate_Step_ModuleVersionCheck"  STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Upgrade_Module_Pos ) }">
	<MvASSIGN NAME = "g.Upgrade_Module" INDEX = "{ l.pos }" MEMBER = "VersionDisposition" VALUE = "{ ltrim( rtrim( g.Upgrade_Module_Current_VersionDisposition ) ) }">
	<MvASSIGN NAME = "g.Upgrade_Module" INDEX = "{ l.pos }" MEMBER = "VersionNewFile" VALUE = "{ ltrim( rtrim( g.Upgrade_Module_Current_VersionNewFile ) ) }">

	<MvIF EXPR = "{ len( g.Upgrade_Module[ l.pos ]:VersionDisposition ) EQ 0 }">
		<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00014">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please select an option</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			

		<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_ModuleVersionCheck, '', l.field_error ) }">
	</MvIF>
	
	<MvIF EXPR = "{ g.Upgrade_Module[ l.pos ]:VersionDisposition EQ 'new' }">
		<MvIF EXPR = "{ len( g.Upgrade_Module[ l.pos ]:VersionNewFile ) EQ 0 }">
			<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00015">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Please specify a file name</MvLOCALIZED-TEXT>
			</MvLOCALIZED>			

			<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_ModuleVersionCheck, 'Upgrade_Module_Current_VersionNewFile', l.field_error ) }">
		</MvIF>
		<MvIF EXPR = "{ NOT sexists( g.Module_Root $ g.Upgrade_Module[ l.pos ]:VersionNewFile ) }">
			<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00016">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">The file specified does not exist</MvLOCALIZED-TEXT>
			</MvLOCALIZED>			

			<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_ModuleVersionCheck, 'Upgrade_Module_Current_VersionNewFile', l.field_error ) }">
		</MvIF>	
	</MvIF>
	
	<MvIF EXPR = "{ g.Upgrade_Module[ l.pos ]:VersionDisposition EQ 'keep' }">
		<MvIF EXPR = "{ NOT scopy( g.Old_Module_Root $ g.Upgrade_Module[ l.pos ]:VersionModule, g.Module_Root $ g.Upgrade_Module[ l.pos ]:VersionModule ) }">
			<MvLOCALIZED NAME = "l.field_error" ID = "MER-UPG-00017">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Could not copy the specified file</MvLOCALIZED-TEXT>
			</MvLOCALIZED>			

			<MvFUNCTIONRETURN VALUE = "{ Upgrade_FieldError( g.Step_Wizard_ModuleVersionCheck, 'Upgrade_Module_Current_VersionNewFile', l.field_error ) }">
		</MvIF>	
	</MvIF>


	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Wizard_ModuleVersionCheck"  STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Upgrade_Module_Pos ) }">

	<MvASSIGN NAME = "l.new_file"		VALUE = "{ g.Upgrade_Module[ l.pos ]:VersionNewFile }">

	<MvDO FILE = "{ g.Module_Admin }" NAME = "l.javascript" VALUE = "{ JavaScript_SetVariables( 'g', 'sessionurl, Store_Code, Edit_Store' ) }">
	<MvEVAL EXPR = "{ l.javascript }">
	<SCRIPT LANGUAGE = "JavaScript">
<!--
function Upgrade_ModuleVersionCheck_Previous( step )
{
	document.forms[ Screen ].elements[ 'Upgrade_Module_New_Pos' ].value = parseInt( document.forms[ Screen ].elements[ 'Upgrade_Module_Pos' ].value ) - 1;
	document.forms[ Screen ].elements[ 'New_Step' ].value = step;
	document.forms[ Screen ].submit();	
}

function Upgrade_ModuleVersionCheck_Next( step )
{
	document.forms[ Screen ].elements[ 'Upgrade_Module_New_Pos' ].value = parseInt( document.forms[ Screen ].elements[ 'Upgrade_Module_Pos' ].value ) + 1;
	document.forms[ Screen ].elements[ 'New_Step' ].value = step;
	document.forms[ Screen ].submit();	
}

function PopupFileUpload( type, data, field )
{
	var URL = g.sessionurl + 'Screen=FUPL&FileUpload_Form=' + Screen + '&FileUpload_Field=' + field + '&FileUpload_Type=' + type + '&FileUpload_Data=' + escape( data );

	if ( Store_Code.length )
	{
		URL += '&Store_Code=' + Store_Code;
	}
	else if ( Edit_Store.length )
	{
		URL += '&Store_Code=' + Edit_Store;
	}

	window.open( URL, 'FileUpload', 'toolbar=no,location=yes,directories=no,status=yes,scrollbars=no,resizable=yes,copyhistory=no,width=465,height=200' ).focus();
}
//-->
	</SCRIPT>
	
	<MvIF EXPR = "{ l.api_version LT '3.50' }">
		<MvASSIGN NAME = "l.can_keep" VALUE = "0">
	<MvELSE>
		<MvASSIGN NAME = "l.can_keep" VALUE = "1">
	</MvIF>
	
	<MvIF EXPR = "{ ( g.Upgrade_ISP_Defaults EQ 'yes' ) AND ( NOT g.Upgrade_ISP_ModuleVersionCheck_CanUpload ) }">
		<MvASSIGN NAME = "l.can_upload" VALUE = "0">
	<MvELSE>
		<MvASSIGN NAME = "l.can_upload" VALUE = "0">
		
		<MvOPEN NAME = "Upgrade_Users" DATABASE = "{ g.MerchantPath $ 'users.dbf' }" INDEXES = "{ g.MerchantPath $ 'usr_name.mvx' }">
		<MvIF EXPR = "{ MvOPEN_Error }">
			<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00009', MvOPEN_Error ) }">
		<MvELSE>
			<MvFIND NAME = "Upgrade_Users" VALUE = "{ toupper( g.Upgrade_Login ) }" EXACT>
			<MvIF EXPR = "{ NOT Upgrade_Users.d.EOF }">
				<MvIF EXPR = "{ s.version LT 3.9026 }">
					<MvIF EXPR = "{ substring( Upgrade_Users.d.password, 1, 3 ) EQ '$1$' }">
						<MvASSIGN NAME = "l.salt" VALUE = "{ substring( Upgrade_Users.d.password, 4, 2 ) }">
					<MvELSE>
						<MvASSIGN NAME = "l.salt" VALUE = "{ substring( Upgrade_Users.d.password, 1, 2 ) }">
					</MvIF>
				<MvELSE>
					<MvASSIGN NAME = "l.salt" VALUE = "{ Upgrade_Users.d.password }">
				</MvIF>

				<MvIF EXPR = "{ ( g.Upgrade_Password CRYPT l.salt ) EQ Upgrade_Users.d.password }">
					<MvIF EXPR = "{ Upgrade_Users.d.admin }">
						<MvASSIGN NAME = "l.can_upload" VALUE = 1>
					</MvIF>
				</MvIF>
			</MvIF>

			<MvCLOSE NAME = "Upgrade_Users">
		</MvIF>		
	</MvIF>

	<TABLE BORDER = 0 CELLPADDING = 2 CELLSPACING = 0 WIDTH = "100%">
	<TR><TD VALIGN = "top" ALIGN = "left" COLSPAN = 2>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvIF EXPR = "{ l.can_keep }">
			<MvLOCALIZED ID = "MER-UPG-00108">
				<MvLOCALIZED-TOKEN NAME = "module_name" VALUE = "{ g.Upgrade_Module[ l.pos ]:VersionName }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">
					<P>
					No upgrade was found for <B>%module_name%</B>, and your current module may not work with the new version of Merchant.  If you have a new version of this module, you may use that; or you may deactivate this module, or you may use the old version of the module.
					</P>
				</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		<MvELSE>
			<MvLOCALIZED ID = "MER-UPG-00108">
				<MvLOCALIZED-TOKEN NAME = "module_name" VALUE = "{ g.Upgrade_Module[ l.pos ]:VersionName }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">
					<P>
					No upgrade was found for <B>%module_name%</B>, and your current module will not work with the new version of Merchant.  If you have a new version of this module, you may use that, or you may deactivate this module.
					</P>
				</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<MvIF EXPR = "{ l.can_keep }">
		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
				&nbsp;
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvIF EXPR = "{ g.Upgrade_Module[ l.pos ]:VersionDisposition EQ 'keep' }">
				<INPUT TYPE = "radio" NAME = "Upgrade_Module_Current_VersionDisposition" VALUE = "keep" CHECKED>
			<MvELSE>
				<INPUT TYPE = "radio" NAME = "Upgrade_Module_Current_VersionDisposition" VALUE = "keep">
			</MvIF>
			<MvLOCALIZED ID = "MER-UPG-00109">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Keep current version</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			</FONT>
		</TD></TR>
	</MvIF>

	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			&nbsp;	
		</FONT>
	</TD><TD WIDTH = "100%">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvIF EXPR = "{ g.Upgrade_Module[ l.pos ]:VersionDisposition EQ 'skip' }">
			<INPUT TYPE = "radio" NAME = "Upgrade_Module_Current_VersionDisposition" VALUE = "skip" CHECKED>
		<MvELSE>
			<INPUT TYPE = "radio" NAME = "Upgrade_Module_Current_VersionDisposition" VALUE = "skip">
		</MvIF>
		<MvLOCALIZED ID = "MER-UPG-00109">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Skip this module.</MvLOCALIZED-TEXT>
		</MvLOCALIZED>			
		</FONT>
	</TD></TR>
	
	
	<MvIF EXPR = "{ l.can_upload }">
		<TR><TD NOWRAP>
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
				&nbsp;
			</FONT>
		</TD><TD WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvIF EXPR = "{ g.Upgrade_Module[ l.pos ]:VersionDisposition EQ 'new' }">
				<INPUT TYPE = "radio" NAME = "Upgrade_Module_Current_VersionDisposition" VALUE = "new" CHECKED>
			<MvELSE>
				<INPUT TYPE = "radio" NAME = "Upgrade_Module_Current_VersionDisposition" VALUE = "new">
			</MvIF>
			<MvLOCALIZED ID = "MER-UPG-00109">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Use</MvLOCALIZED-TEXT>
			</MvLOCALIZED>			
			<INPUT TYPE = "text" SIZE = 40 NAME = "Upgrade_Module_Current_VersionNewFile" VALUE = "{ g.Upgrade_Module[ l.pos ]:VersionNewFile }">
			<MvEVAL EXPR = "{ '<A HREF = "JavaScript:PopupFileUpload( \'Module\', \'' $ JavaScriptEncode( Upgrade_Module_Current_ID ) $ '\', 'Upgrade_Module_Current_VersionNewFile' );">' }"><MvEVAL EXPR = "{ DrawImgButton_Upload(0) }"><MvEVAL EXPR = "</A>">
			</FONT>
		</TD></TR>
	</MvIF>
	
	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD VALIGN = "bottom" ALIGN = "left">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Previous() }">
	</TD><TD VALIGN = "bottom" ALIGN = "right">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Next() }">
	</TD></TR>
	</TABLE>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Wizard_Finish" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<TABLE BORDER = 0 CELLPADDING = 2 CELLSPACING = 0 WIDTH = "100%">
	<TR><TD VALIGN = "top" ALIGN = "left" COLSPAN = 2>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00123">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">
				<P>
				The Miva Merchant Upgrade Wizard has now collected all of the information required to
				begin the upgrade process.
				</P>

				<P>
				Press the <B>Upgrade</B> button to begin upgrading your installation of Miva Merchant.
				</P>
			</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
				<P>
				Dem Miva Merchant Upgrade-Assistenten stehen nun alle erforderlichen Informationen zur Verf�gung, um den Upgrade-Vorgang zu beginnen.
				</P>
				
				<P>
				Klicken Sie bitte auf "<B>Upgrade</B>", um den Upgrade Ihrer Miva Merchant Installierung zu starten.
				</P>
			</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		</FONT>
	</TD></TR>

	<TR><TD COLSPAN = "2">&nbsp;</TD></TR>

	<TR><TD VALIGN = "bottom" ALIGN = "left">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Previous() }">
	</TD><TD VALIGN = "bottom" ALIGN = "right">
		<MvEVAL EXPR = "{ Upgrade_Draw_Button_Next() }">
	</TD></TR>
	</TABLE>
</MvFUNCTION>

<MvCOMMENT>
| 
| *************************************************************************************************
| Code that actually performs the upgrade starts here
| *************************************************************************************************
|
</MvCOMMENT>

<MvFUNCTION NAME = "Screen_Upgrade" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.ok" VALUE = 1>

	<MvIF EXPR = "{ g.Frame EQ 'PROG' }">
		<BODY BGCOLOR = "#ffffff">
		</BODY>
	<MvELSE>
		<MvOPEN NAME = "Upgrade_Users" DATABASE = "{ g.MerchantPath $ 'users.dbf' }" INDEXES = "{ g.MerchantPath $ 'usr_name.mvx' }">
		<MvIF EXPR = "{ MvOPEN_Error }">
			<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00009', MvOPEN_Error ) }">
		<MvELSE>
			<MvASSIGN NAME = "l.valid" VALUE = 0>

			<MvFIND NAME = "Upgrade_Users" VALUE = "{ toupper( g.Upgrade_Login ) }" EXACT>
			<MvIF EXPR = "{ NOT Upgrade_Users.d.EOF }">
				<MvIF EXPR = "{ s.version LT 3.9026 }">
					<MvIF EXPR = "{ substring( Upgrade_Users.d.password, 1, 3 ) EQ '$1$' }">
						<MvASSIGN NAME = "l.salt" VALUE = "{ substring( Upgrade_Users.d.password, 4, 2 ) }">
					<MvELSE>
						<MvASSIGN NAME = "l.salt" VALUE = "{ substring( Upgrade_Users.d.password, 1, 2 ) }">
					</MvIF>
				<MvELSE>
					<MvASSIGN NAME = "l.salt" VALUE = "{ Upgrade_Users.d.password }">
				</MvIF>

				<MvIF EXPR = "{ ( g.Upgrade_Password CRYPT l.salt ) EQ Upgrade_Users.d.password }">
					<MvIF EXPR = "{ Upgrade_Users.d.admin }">
						<MvASSIGN NAME = "l.valid" VALUE = 1>
					</MvIF>
				</MvIF>
			</MvIF>
			
			<MvIF EXPR = "{ NOT l.valid }">
				<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00124">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US">Invalid username/password, or the user specified does not have administrative privileges.</MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Invalid username/password, or the user specified does not have administrative privileges.</MvLOCALIZED-TEXT>
				</MvLOCALIZED>

				<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00010', l.error ) }">
			</MvIF>
			
			<MvCLOSE NAME = "Upgrade_Users">
		</MvIF>

		<MvIF EXPR = "{ l.ok }">
			<MvIF EXPR = "{ len( g.Frame ) EQ 0 }">
				<MvASSIGN NAME = "l.skipped_modules" VALUE = "">
				<MvASSIGN NAME = "l.pos" VALUE = "1">
				<MvWHILE EXPR = "{ ( l.pos LE g.Upgrade_Module_Count ) }">
					<MvIF EXPR = "{ g.Upgrade_Module[ l.pos ]:VersionDisposition EQ 'skip' }">
						<MvASSIGN NAME = "l.skipped_modules" VALUE = "{ l.skipped_modules $ ':' $ g.Upgrade_Module[ l.pos ]:ID }">
					</MvIF>
					<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				</MvWHILE>
					
				<MvIF EXPR = "{ len( l.skipped_modules ) }">
					<MvASSIGN NAME = "l.skipped_modules" VALUE = "{ '&Skip=' $ l.skipped_modules $ ':' }">
				</MvIF>			
			
				<FRAMESET ROWS = "*, 25%, 22%" BORDER = 0>
					<FRAME NAME = "Info"		SRC = "{ g.sessionurl $ 'Screen=UPGD&Frame=INFO&Upgrade_Login=' $ encodeattribute( g.Upgrade_Login ) $ '&Upgrade_Password=' $ encodeattribute( g.Upgrade_Password ) $ l.skipped_modules }" NORESIZE>
					<FRAME NAME = "Work"		SRC = "{ g.sessionurl $ 'Screen=UPGD&Frame=WORK&Upgrade_Login=' $ encodeattribute( g.Upgrade_Login ) $ '&Upgrade_Password=' $ encodeattribute( g.Upgrade_Password ) $ l.skipped_modules }" NORESIZE>
					<FRAME NAME = "Progress"	SRC = "{ g.sessionurl $ 'Screen=UPGD&Frame=PROG' }" NORESIZE>

					<NOFRAMES>
						<MvLOCALIZED ID = "MER-UPG-00125">
							<MvLOCALIZED-TEXT LANGUAGE = "en-US">The Miva Merchant Upgrade Script requires a browser that supports frames</MvLOCALIZED-TEXT>
							<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Das Miva Merchant Upgrade-Script erfordert einen Browser, der Frames unterst�tzt</MvLOCALIZED-TEXT>
						</MvLOCALIZED>
					</NOFRAMES>
				</FRAMESET>
			<MvELSE>
				<MvIF EXPR = "{ g.Frame EQ 'INFO' }">
					<MvASSIGN NAME = "l.ok" VALUE = "{ Screen_Upgrade_Info() }">
				</MvIF>

				<MvIF EXPR = "{ g.Frame EQ 'WORK' }">
					<MvASSIGN NAME = "l.ok" VALUE = "{ Screen_Upgrade_Work() }">
				</MvIF>
			</MvIF>
		</MvIF>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = "{ l.ok }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Start_Upgrade" PARAMETERS = "" STANDARDOUTPUTLEVEL = "">
	<MvOPEN NAME = "Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
	<MvASSIGN NAME = "Domain.d.version" VALUE = "{ Upgrade_Numeric_Version( Domain.d.version ) $ 'u' }">
	<MvUPDATE NAME = "Domain">
	<MvCLOSE NAME = "Domain">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_SCopy" PARAMETERS = "source, destination" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.ok" VALUE = "{ scopy( l.source, destination ) }">
	<MvIF EXPR = "{ NOT scopy( l.source, destination ) }">
		<MvLOCALIZED NAME = "l.error" ID = "MER-UPG-00145">
			<MvLOCALIZED-TOKEN NAME = "source" VALUE = "{ l.source }">
			<MvLOCALIZED-TOKEN NAME = "destination" VALUE = "{ l.destination }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Unable to copy '%source%' to '%destination%'</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">'%source%' kann nicht zu '%destination%' kopiert werden</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( '#Error#', l.error ) }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = "{ l.ok }"> 
</MvFUNCTION>

<MvFUNCTION NAME = "Screen_Upgrade_Info" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<BODY BGCOLOR = "#ffffff">
	<SCRIPT LANGUAGE = "JavaScript">
<!--
function Upgrade_Finished()
{
	Upgrade_Clear_Status();
	document.Upgrade_Finished.submit();
}

function Upgrade_Finished_With_Errors()
{
	Upgrade_Clear_Status();
	document.Upgrade_Finished.elements[ 'Upgrade_Errors_Detected' ].value = 1;
	document.Upgrade_Finished.submit();
}

function Upgrade_Clear_Status()
{
	var output_document;

	output_document = parent.Progress.document;

	output_document.open( 'text/html', 1 );
	output_document.writeln( '<HTML><BODY BGCOLOR = "#ffffff">' );
	output_document.writeln( '</BODY></HTML>' );
	output_document.close();
}

function Upgrade_Draw_Status( action_prompt, action_text, record_prompt, record_text, progress_prompt, recno, totrec )
{
	var percent_completed;
	var percent_remaining;
	var output_document;

	if ( recno == -1 )
	{
		if ( totrec )
		{
			percent_completed = 100;
			percent_remaining = 0;
		}
		else
		{
			percent_completed = 0;
			percent_remaining = 100;
		}
	}
	else if ( recno == 0 && totrec == 0 )
	{
		percent_completed = 100;
		percent_remaining = 0;
	}
	else
	{
		percent_completed = ( recno * 100 ) / totrec;
		percent_remaining = 100 - percent_completed;
	}

	output_document = parent.Progress.document;

	output_document.open( 'text/html', 1 );
	output_document.writeln( '<HTML><BODY BGCOLOR = "#ffffff">' );
	output_document.writeln( '<TABLE BORDER = 0 WIDTH = "100%">' );
	output_document.writeln( '<TR><TD NOWRAP>' );
	output_document.writeln( '	<FONT FACE = "Arial, Helvetica" SIZE = "-1">' );
	output_document.writeln( '	<B>' + action_prompt + '</B>' );
	output_document.writeln( '	</FONT>' );
	output_document.writeln( '</TD><TD WIDTH = "100%">' );
	output_document.writeln( '	<FONT FACE = "Arial, Helvetica" SIZE = "-1">' );
	output_document.writeln( '	' + action_text + '</B>' );
	output_document.writeln( '	</FONT>' );
	output_document.writeln( '</TD></TR>' );
	
	if ( recno != -1 )
	{
		output_document.writeln( '' );
		output_document.writeln( '<TR><TD NOWRAP>' );
		output_document.writeln( '	<FONT FACE = "Arial, Helvetica" SIZE = "-1">' );
		output_document.writeln( '	<B>' + progress_prompt + '</B>' );
		output_document.writeln( '	</FONT>' );
		output_document.writeln( '</TD><TD WIDTH = "100%">' );
		output_document.writeln( '	<TABLE BORDER = 0 CELLPADDING = 4 WIDTH = "100%">' );
		output_document.writeln( '	<TR><TD ALIGN = "right" VALIGN = "middle">' );
		output_document.writeln( '		<FONT FACE = "Arial, Helvetica" SIZE = "-1">' );
		output_document.writeln( '		<B>0%</B>' );
		output_document.writeln( '		</FONT>' );
		output_document.writeln( '	</TD><TD BGCOLOR = "blue" ALIGN = "center" WIDTH = "' + Math.round( percent_completed ) + '%">' );
		output_document.writeln( '		<FONT FACE = "Arial, Helvetica" SIZE = "-1" COLOR = "white">' );
		output_document.writeln( '		<B>' + Math.round( percent_completed ) + '%</B>' );
		output_document.writeln( '		</FONT>' );
		output_document.writeln( '	</TD><TD WIDTH = "' + Math.round( percent_remaining ) + '%">' );
		output_document.writeln( '		&nbsp;' );
		output_document.writeln( '	</TD><TD ALIGN = "left" VALIGN = "middle">' );
		output_document.writeln( '		<FONT FACE = "Arial, Helvetica" SIZE = "-1">' );
		output_document.writeln( '		<B>100%</B>' );
		output_document.writeln( '		</FONT>' );
		output_document.writeln( '	</TD></TR>' );
		output_document.writeln( '	</TABLE>' );
		output_document.writeln( '</TD></TR>' );
	}

	if ( record_prompt.length )
	{
		output_document.writeln( '' );
		output_document.writeln( '<TR><TD NOWRAP>' );
		output_document.writeln( '	<FONT FACE = "Arial, Helvetica" SIZE = "-1">' );
		output_document.writeln( '	<B>' + record_prompt + '</B>' );
		output_document.writeln( '	</FONT>' );
		output_document.writeln( '</TD><TD WIDTH = "100%">' );
		output_document.writeln( '	<FONT FACE = "Arial, Helvetica" SIZE = "-1">' );
		output_document.writeln( '	' + record_text );
		output_document.writeln( '	</FONT>' );
		output_document.writeln( '</TD></TR>' );
	}

	output_document.writeln( '</TABLE>' );
	output_document.writeln( '</BODY></HTML>' );
	output_document.close();
}
//-->
	</SCRIPT>

	<MvASSIGN NAME = "l.source_version" VALUE = "Unknown">
	<MvOPEN NAME = "Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
	<MvIF EXPR = "{ NOT MvOPEN_Error }">
		<MvASSIGN NAME = "l.source_version" VALUE = "{ Upgrade_Numeric_Version( Domain.d.version ) }">
		<MvCLOSE NAME = "Domain">
	</MvIF>

	<FONT FACE = "Arial, Helvetica">
	<MvLOCALIZED ID = "MER-UPG-00003">
		<MvLOCALIZED-TOKEN NAME = "source_version" VALUE = "{ l.source_version }">
		<MvLOCALIZED-TOKEN NAME = "dest_version" VALUE = "{ g.Merchant_Version }">
		<MvLOCALIZED-TOKEN NAME = "path" VALUE = "{ g.MerchantPath }">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">
			<B>Upgrade in Progress</B>

			<FONT SIZE = "-1">
			<P>
			The Miva Merchant Upgrade script is currently upgrading your Miva Merchant installation
			from version <B>%source_version%</B> to version <B>%dest_version%</B>.  This process may take a significant amount of
			time, depending on the number of storefronts in your Miva Merchant installation, and the quantity
			of categories, products, and other items in those stores.
			</P>

			<FONT COLOR = "red">
			<P><B>Please do not close your browser or otherwise interrupt this process.</B></P>
			</FONT>

			<P>
			A log of the upgrade process is being generated, and is stored in the file <B>upgrade.log</B>.  This file
			is available in the <B>%path%</B> subdirectory of your Miva data directory.
			</P>
		</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
			<B>Upgrade wird durchgef�hrt</B>
			
			<FONT SIZE = "-1">
			
			<P>
			Das Miva Merchant Upgrade-Script f�hrt jetzt einen Upgrade Ihrer Miva Merchant Installierung von 
			Version <B>%source_version%</B> auf Version <B>%dest_version%</B> durch. Je nach Anzahl der Ladenfronten in Ihrer 
			Miva Merchant Installierung und der in diesen L�den befindlichen Kategorien, Produkte und sonstige Punkte kann 
			dieser Vorgang einige Zeit in Anspruch nehmen.
			</P>
			
			<FONT COLOR = "red">
			<P>
			<B>Bitte schlie�en Sie nicht Ihren Browser bzw. unterbrechen Sie diesen Vorgang nicht anderweitig.</B>
			</P>
			</FONT>
			
			<P>
			Es wird ein Protokoll des Upgrade-Vorgangs erstellt, das in der Datei &quot;<B>upgrade.log<B>&quot; gespeichert wird. 
			Diese Datei befindet sich im Unterverzeichnis &quot;<B>%path%</B>&quot; Ihres Miva Datenverzeichnisses.
			</P>

		</MvLOCALIZED-TEXT>
	</MvLOCALIZED>
	</FONT>

	<FORM TARGET = "_top" NAME = "Upgrade_Finished" METHOD = "POST" ACTION = "{ g.sessionurl }">
	<INPUT TYPE = "hidden" NAME = "Screen" VALUE = "FINI">
	<INPUT TYPE = "hidden" NAME = "Upgrade_Errors_Detected" VALUE = 0>
	</FORM>
	</BODY>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Screen_Upgrade_Work" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.ok" VALUE = 1>

	<BODY BGCOLOR = "#ffffff" ONLOAD = "Upgrade_Resume();">

	<MvOPEN NAME = "Upgrade_Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
	<MvIF EXPR = "{ MvOPEN_Error }">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00011', MvOPEN_Error ) }">
	<MvELSE>
		<MvIF EXPR = "{ 'https://' IN g.sessionurl }">
			<MvASSIGN NAME = "g.Secure" VALUE = 1>
		<MvELSE>
			<MvASSIGN NAME = "g.Secure" VALUE = 0>
		</MvIF>

		<MvIF EXPR = "{ g.Secure }">
			<MvASSIGN NAME = "g.Module_Root_Versionless" VALUE = "{ Upgrade_Domain.d.mod_sroot }">
		<MvELSE>
			<MvASSIGN NAME = "g.Module_Root_Versionless" VALUE = "{ Upgrade_Domain.d.mod_root }">
		</MvIF>

		<MvASSIGN NAME = "g.Module_Root" VALUE = "{ g.Module_Root_Versionless $ g.Version_Path }">

		<MvASSIGN NAME = "g.Module_Library_Utilities" VALUE = "{ g.Module_Root_Versionless $ g.Upgrade_Library_Utilities }">
		<MvASSIGN NAME = "g.Module_Library_DB" VALUE = "{ g.Module_Root_Versionless $ g.Upgrade_Library_DB }">
		<MvASSIGN NAME = "g.Module_Library_Help" VALUE = "{ g.Module_Root $ g.Library_Help }">
		<MvASSIGN NAME = "g.Upgrade_Version_From" VALUE = "{ Upgrade_Domain.d.version }">
		
		<MvCLOSE NAME = "Upgrade_Domain">

		<MvIF EXPR = "{ g.Upgrade_Have_State NE 'Yes' }">
			<MvEVAL EXPR = "{ Upgrade_Setup_State() }">
		</MvIF>

		<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Operation_Pos ) }">

		<MvIF EXPR = "{ ( g.Operation[ l.pos ] EQ 'store_db' ) OR
						( g.Operation[ l.pos ] EQ 'store_db_index' ) OR
						( g.Operation[ l.pos ] EQ 'store_rename_db' ) OR
						( g.Operation[ l.pos ] EQ 'store_rename_index' ) OR
						( g.Operation[ l.pos ] EQ 'store_cleanup' ) OR
						( g.Operation[ l.pos ] EQ 'store_key' ) OR
						( g.Operation[ l.pos ] EQ 'store_modules' ) }">
			<MvIF EXPR = "{ g.Store_Record_Pos GT g.Store_Record_Count }">
				<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
				
				<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
				<MvASSIGN NAME = "g.Store_Record_Pos" VALUE = 1>
			</MvIF>
			<MvASSIGN NAME = "l.store_pos" VALUE = "{ int( g.Store_Record_Pos ) }">

			<MvASSIGN NAME = "g.Current_Store_ID" VALUE = "{ g.Store_Record[ l.store_pos ]:ID }">
			<MvASSIGN NAME = "g.Current_Store_Code" VALUE = "{ g.Store_Record[ l.store_pos ]:Code }">
			<MvASSIGN NAME = "g.Current_Store_Name" VALUE = "{ g.Store_Record[ l.store_pos ]:Name }">
			<MvASSIGN NAME = "g.Current_Store_Country" VALUE = "{ g.Store_Record[ l.store_pos ]:Country }">		
		</MvIF>
		
		<MvIF EXPR = "{ l.pos GT g.Operation_Count }">
			<MvIF EXPR = "{ g.Upgrade_Errors_Detected }">
				<SCRIPT LANGUAGE = "JavaScript">
<!--
function Upgrade_Resume()
{
	parent.Info.Upgrade_Finished_With_Errors();
}
//-->
				</SCRIPT>
			<MvELSE>
				<SCRIPT LANGUAGE = "JavaScript">
<!--
function Upgrade_Resume()
{
	parent.Info.Upgrade_Finished();
}
//-->
				</SCRIPT>
			</MvIF>
		<MvELSE>
			
			<MvOPEN NAME = "Upgrade_Modules" DATABASE = "{ g.MerchantPath $ 'modules.dbf' }" INDEXES = "{ g.MerchantPath $ 'mod_code.mvx' }">
			<MvFILTER NAME = "Upgrade_Modules" FILTER = "{ NOT Upgrade_Modules.d.deleted }">
			<MvASSIGN NAME = "l.module_count" VALUE = "{ Upgrade_Modules.d.totrec }">
			<MvCLOSE NAME = "Upgrade_Modules">
			
			<MvASSIGN NAME = "l.operation" VALUE = "{ g.Operation[ l.pos ] }">

			<MvASSIGN NAME = "l.file_total" VALUE = "{ 1 +
													   g.Domain_Misc_Count + 
													   g.Domain_DB_Count + 
													   g.Domain_DB_Index_Count + 
													   g.Domain_DB_Count +
													   g.Domain_DB_Index_Count +
													   1 +
													   g.Domain_Privilege_Count +
													   g.Domain_Module_New_Count +
													   g.Domain_Key_Count +
													   1 +
													   g.Store_Record_Count * (
													   		g.Store_DB_Count +
													   		g.Store_DB_Index_Count +
															g.Store_DB_Count +
													   		g.Store_DB_Index_Count +												   		g.Store_Key_Count +
													   		1 ) +
													   1 }">

			<MvEVAL EXPR = "{ Upgrade_Draw_Status_Overall( l.operation, g.Current_Store_Name, g.Overall_Pos, l.file_total ) }">
			
			<MvIF EXPR = "{ l.operation EQ 'domain_start_upgrade' }">
				<MvEVAL EXPR = "{ Upgrade_Start_Upgrade() }">

				<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'domain_misc' }">
				<MvIF EXPR = "{ NOT Upgrade_Domain_Misc() }">
					<MvASSIGN NAME = "g.Domain_Misc_Pos" VALUE = "{ g.Domain_Misc_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Domain_Misc_Pos GT g.Domain_Misc_Count }">
					<MvASSIGN NAME = "g.Domain_Misc_Pos" VALUE = 1>
					<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'domain_db' }">
				<MvIF EXPR = "{ NOT Upgrade_Domain_DB() }">
					<MvASSIGN NAME = "g.Domain_DB_Pos" VALUE = "{ g.Domain_DB_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Domain_DB_Pos GT g.Domain_DB_Count }">
					<MvASSIGN NAME = "g.Domain_DB_Pos" VALUE = 1>
					<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'domain_db_index' }">
				<MvIF EXPR = "{ NOT Upgrade_Domain_DB_Index() }">
					<MvASSIGN NAME = "g.Domain_DB_Index_Pos" VALUE = "{ g.Domain_DB_Index_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Domain_DB_Index_Pos GT g.Domain_DB_Index_Count }">
					<MvASSIGN NAME = "g.Domain_DB_Index_Pos" VALUE = 1>
					<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'store_db' }">
				<MvIF EXPR = "{ NOT Upgrade_Store_DB() }">
					<MvASSIGN NAME = "g.Store_DB_Pos" VALUE = "{ g.Store_DB_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Store_DB_Pos GT g.Store_DB_Count }">
					<MvIF EXPR = "{ g.Store_DB_Pos GT g.Store_DB_Count }">
						<MvASSIGN NAME = "g.Store_DB_Pos" VALUE = 1>
						<MvASSIGN NAME = "g.Store_Record_Pos" VALUE = "{ g.Store_Record_Pos + 1 }">
					</MvIF>
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'store_db_index' }">
				<MvIF EXPR = "{ NOT Upgrade_Store_DB_Index() }">
					<MvASSIGN NAME = "g.Store_DB_Index_Pos" VALUE = "{ g.Store_DB_Index_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Store_DB_Index_Pos GT g.Store_DB_Index_Count }">
					<MvIF EXPR = "{ g.Store_DB_Index_Pos GT g.Store_DB_Index_Count }">
						<MvASSIGN NAME = "g.Store_DB_Index_Pos" VALUE = 1>
						<MvASSIGN NAME = "g.Store_Record_Pos" VALUE = "{ g.Store_Record_Pos + 1 }">
					</MvIF>
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'domain_rename_db' }">
				<MvIF EXPR = "{ NOT Upgrade_Domain_Rename_DB() }">
					<MvASSIGN NAME = "g.Domain_DB_Pos" VALUE = "{ g.Domain_DB_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Domain_DB_Pos GT g.Domain_DB_Count }">
					<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'domain_rename_index' }">
				<MvIF EXPR = "{ NOT Upgrade_Domain_Rename_DB_Index() }">
					<MvASSIGN NAME = "g.Domain_DB_Index_Pos" VALUE = "{ g.Domain_DB_Index_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Domain_DB_Index_Pos GT g.Domain_DB_Index_Count }">
					<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'domain_cleanup' }">
				<MvIF EXPR = "{ NOT Upgrade_Domain_Cleanup() }">
					<MvCOMMENT> Handled by lower level </MvCOMMENT>
				</MvIF>

				<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'store_rename_db' }">
				<MvIF EXPR = "{ NOT Upgrade_Store_Rename_DB() }">
					<MvASSIGN NAME = "g.Store_DB_Pos" VALUE = "{ g.Store_DB_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Store_DB_Pos GT g.Store_DB_Count }">
					<MvASSIGN NAME = "g.Store_DB_Pos" VALUE = 1>
					<MvASSIGN NAME = "g.Store_Record_Pos" VALUE = "{ g.Store_Record_Pos + 1 }">
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'store_rename_index' }">
				<MvIF EXPR = "{ NOT Upgrade_Store_Rename_DB_Index() }">
					<MvASSIGN NAME = "g.Store_DB_Index_Pos" VALUE = "{ g.Store_DB_Index_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Store_DB_Index_Pos GT g.Store_DB_Index_Count }">
					<MvASSIGN NAME = "g.Store_DB_Index_Pos" VALUE = 1>
					<MvASSIGN NAME = "g.Store_Record_Pos" VALUE = "{ g.Store_Record_Pos + 1 }">
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'store_cleanup' }">
				<MvIF EXPR = "{ NOT Upgrade_Store_Cleanup() }">
					<MvCOMMENT> Handled by lower level </MvCOMMENT>
				</MvIF>

				<MvASSIGN NAME = "g.Store_Record_Pos" VALUE = "{ g.Store_Record_Pos + 1 }">
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'store_key' }">
				<MvIF EXPR = "{ NOT Upgrade_Store_Key() }">
					<MvASSIGN NAME = "g.Store_Key_Pos" VALUE = "{ g.Store_Key_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Store_Key_Pos GT g.Store_Key_Count }">
					<MvASSIGN NAME = "g.Store_Key_Pos" VALUE = 1>
					<MvASSIGN NAME = "g.Store_Record_Pos" VALUE = "{ g.Store_Record_Pos + 1 }">
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'domain_key' }">
				<MvIF EXPR = "{ NOT Upgrade_Domain_Key() }">
					<MvASSIGN NAME = "g.Domain_Key_Pos" VALUE = "{ g.Domain_Key_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Domain_Key_Pos GT g.Domain_Key_Count }">
					<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'domain_priv' }">
				<MvIF EXPR = "{ NOT Upgrade_Domain_Privilege() }">
					<MvASSIGN NAME = "g.Domain_Privilege_Pos" VALUE = "{ g.Domain_Privilege_Pos + 1 }">
				</MvIF>

				<MvIF EXPR = "{ g.Domain_Privilege_Pos GT g.Domain_Privilege_Count }">
					<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'domain_modules' }">
				<MvDO FILE = "{ g.Upgrade_Library_DB }" NAME = "l.ok" VALUE = "{ OpenDataFiles( g.Merchant_Version ) }">
				<MvIF EXPR = "{ l.ok }">
					<MvDO FILE = "{ g.Upgrade_Library_DB }" NAME = "l.found" VALUE = "{ Module_FindFirst_Admin() }">
					<MvIF EXPR = "{ NOT l.found }">
						<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
					<MvELSE>
						<MvASSIGN NAME = "l.pos" VALUE = "{ g.Domain_Module_Record }">
						<MvWHILE EXPR = "{ l.pos }">
							<MvDO FILE = "{ g.Upgrade_Library_DB }" NAME = "l.found" VALUE = "{ Module_FindNext_Admin() }">
							<MvIF EXPR = "{ NOT l.found }">
								<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
								<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
								<MvWHILESTOP>
							</MvIF>

							<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos - 1 }">
						</MvWHILE>

						<MvIF EXPR = "{ l.found }">
							<MvIF EXPR = "{ NOT Upgrade_Domain_Module() }">
								<MvASSIGN NAME = "g.Domain_Module_Record" VALUE = "{ g.Domain_Module_Record + 1 }">
							</MvIF>
						</MvIF>
					</MvIF>
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'store_modules' }">
				<MvDO FILE = "{ g.Upgrade_Library_DB }" NAME = "l.ok" VALUE = "{ OpenDataFiles( g.Merchant_Version ) }">
				<MvIF EXPR = "{ l.ok }">
					<MvDO FILE = "{ g.Upgrade_Library_DB }" NAME = "l.ok" VALUE = "{ Store_Open( g.Current_Store_Code ) }">
					<MvIF EXPR = "{ l.ok }">
						<MvDO FILE = "{ g.Upgrade_Library_DB }" NAME = "l.found" VALUE = "{ StoreModule_FindFirst() }">
						<MvIF EXPR = "{ NOT l.found }">
							<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
							<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">

						<MvELSE>
							<MvASSIGN NAME = "l.pos" VALUE = "{ g.Store_Module_Record }">
							<MvWHILE EXPR = "{ l.pos }">
								<MvDO FILE = "{ g.Upgrade_Library_DB }" NAME = "l.found" VALUE = "{ StoreModule_FindNext() }">
								<MvIF EXPR = "{ NOT l.found }">
									<MvASSIGN NAME = "g.Store_Module_Record" VALUE = 0>
									<MvASSIGN NAME = "g.Store_Record_Pos" VALUE = "{ g.Store_Record_Pos + 1 }">

									<MvWHILESTOP>
								</MvIF>

								<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos - 1 }">
							</MvWHILE>

							<MvIF EXPR = "{ l.found }">
								<MvIF EXPR = "{ NOT Upgrade_Store_Module() }">
									<MvASSIGN NAME = "g.Store_Module_Record" VALUE = "{ g.Store_Module_Record + 1 }">
								</MvIF>
							</MvIF>
						</MvIF>
					</MvIF>
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.operation EQ 'domain_module_new' }">
				<MvDO FILE = "{ g.Upgrade_Library_DB }" NAME = "l.ok" VALUE = "{ OpenDataFiles( g.Merchant_Version ) }">
				<MvIF EXPR = "{ l.ok }">
					<MvIF EXPR = "{ NOT Upgrade_Domain_Module_New() }">
						<MvASSIGN NAME = "g.Domain_Module_New_Pos" VALUE = "{ g.Domain_Module_New_Pos + 1 }">
					</MvIF>

					<MvIF EXPR = "{ g.Domain_Module_New_Pos GT g.Domain_Module_New_Count }">
						<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
					</MvIF>
				</MvIF>
			</MvIF>
			
			<MvIF EXPR = "{ l.operation EQ 'domain_copy_scripts' }">
				<MvASSIGN NAME = "l.ok" VALUE = "{ Upgrade_Domain_Copy_Scripts() }">
				<MvASSIGN NAME = "g.Operation_Pos" VALUE = "{ g.Operation_Pos + 1 }">
			</MvIF>

			<MvEVAL EXPR = "{ Upgrade_Resume() }">
		</MvIF>

	</MvIF>
	</BODY>

	<MvFUNCTIONRETURN VALUE = "{ l.ok }">
</MvFUNCTION>

<MvFUNCTION NAME = "Screen_Upgrade_Finished" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvOPEN NAME = "Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
	<MvIF EXPR = "{ MvOPEN_Error }">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00012', MvOPEN_Error ) }">
	<MvELSE>
		<MvIF EXPR = "{ len( Domain.d.admin_surl ) }">
			<MvASSIGN NAME = "l.admin_url" VALUE = "{ Domain.d.admin_surl }">
		<MvELSE>
			<MvASSIGN NAME = "l.admin_url" VALUE = "{ glosub( Domain.d.mm_url, 'merchant.mv', 'admin.mv' ) }">
		</MvIF>

		<BODY BGCOLOR = "#ffffff">
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvIF EXPR = "{ g.Upgrade_Errors_Detected }">
			<P>
			<MvLOCALIZED ID = "MER-UPG-00137">
				<MvLOCALIZED-TOKEN NAME = "merchant_path" VALUE = "{ g.MerchantPath }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">
					The upgrade process has completed.  However, one or more errors were detected during the upgrade.  All errors were logged to the
					file <B>upgrade.log</B> in the <B>%merchant_path%</B> subdirectory of your Miva data directory.  Please contact Miva Technical Support
					if you require assistance.
				</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
					Der Upgrade-Vorgang ist abgeschlossen. W�hrend des Upgrade-Vorgangs wurde jedoch mindestens ein Fehler festgestellt. Alle aufgetretenen Fehler wurden in der Datei "<B>upgrade.log</B>" protokolliert, die sich im Unterverzeichnis "<B>%merchant_path%</B>" Ihres Miva Datenverzeichnisses befindet. F�r den Fall, dass Sie Hilfe ben�tigen, setzen Sie sich bitte mit der technischen Beratung von Miva in Verbindung. 
				</MvLOCALIZED-TEXT>
			</MvLOCALIZED>									
			</P>
		<MvELSE>
			<P>
			<MvLOCALIZED ID = "MER-UPG-00138">
				<MvLOCALIZED-TOKEN NAME = "merc-vers" VALUE = "{ encodeentities( g.Merchant_Version ) }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">
					<B>Congratulations!</B>  Your Miva Merchant installation has been successfully upgraded to version <B>%merc-vers%</B>.
				</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
					<B>Herzlichen Gl�ckwunsch!</B> Ihre Miva Merchant Installierung wurde erfolgreich auf Version <B>%merc-vers%</B> erweitert.
				</MvLOCALIZED-TEXT>
			</MvLOCALIZED>									
			</P>
		</MvIF>

		<P>
		<MvLOCALIZED ID = "MER-UPG-00139">
			<MvLOCALIZED-TOKEN NAME = "admin-url" VALUE = "{ '<A HREF = "' $ l.admin_url $ '">' $ encodeentities( l.admin_url ) $ '</A>' }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">
				You may access the administrative interface at: %admin-url%<BR>
			</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">
				Sie k�nnen unter %admin-url% auf die administrative Schnittstelle zugreifen<BR>
			</MvLOCALIZED-TEXT>
		</MvLOCALIZED>									
		</P>
		<P>
		<MvLOCALIZED ID = "MER-UPG-00140">	
			<MvLOCALIZED-TOKEN NAME = "merc-url" VALUE = "{ '<A HREF = "' $ Domain.d.mm_url $ '">' $ encodeentities( Domain.d.mm_url ) $ '</A>' }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">The URL to the storefront is: %merc-url%</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Der URL der Store Front: %merc-url%</MvLOCALIZED-TEXT>
		</MvLOCALIZED>									
		</P>
		</FONT>
		</BODY>

		<MvCLOSE NAME = "Domain">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Setup_State" STANDARDOUTPUTLEVEL = "">
	<MvEVAL EXPR = "{ Upgrade_Init() }">

	<MvCOMMENT>
	|
	| NOTE: Make *ABSOLUTELY* certain that you include a Store_DB_Index_Insert() call for each and every
	|       index for all databases that are modified or created.  This includes Indices that were not
	|       modified.  Otherwise the Indices will not be recreated, which will cause all sorts of nastiness.
	|
	</MvCOMMENT>

	<MvCOMMENT>
	|
	| *********************************************************************************************
	|											DOMAIN CHANGES
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvCOMMENT>
	|
	| language.dat
	|
	| 2.20: Created
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Domain_Misc_Insert( 2.20, 'language.dat' ) }">

	<MvCOMMENT>
	|
	| countries.dbf
	|
	| 3.00: Added "id NUMBER"
	| 3.00: We handle this as a new database because we want to re-insert
	|		all of the data from the countries.<language> file.
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Domain_DB_New_Insert( 3.00, 'country.dbf',
											'id			NUMBER,
											 name		CHAR( 50 ),
											 alpha		CHAR( 02 ),
											 numeric	NUMBER' ) }">
	<MvEVAL EXPR = "{ Domain_DB_Index_Insert( 3.00, 'Countries', 'country.dbf', 'cntry_i.mvx', 'Countries.d.id', 'unique, ascending' ) }">
	<MvEVAL EXPR = "{ Domain_DB_Index_Insert( 2.20, 'Countries', 'country.dbf', 'cntry_a.mvx', 'Countries.d.alpha', 'nounique, ascending, string' ) }">
	<MvEVAL EXPR = "{ Domain_DB_Index_Insert( 2.20, 'Countries', 'country.dbf', 'cntry_n.mvx', 'toupper( Countries.d.name )', 'nounique, ascending, string' ) }">

	<MvCOMMENT>
	|
	| stores.dbf
	|
	| 3.00: Added "mnt_warn MEMO"
	| 3.00: Added "mnt_close MEMO"
	| 3.00: Added "mnt_time NUMBER"
	| 3.00: Added "mnt_no_new BOOL"
	| 3.00: Added "omin_quant NUMBER"
	| 3.00: Added "omin_price NUMBER"
	| 3.00: Added "omin_all BOOL"
	| 3.00: Added "omin_msg BOOL"
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Domain_DB_Change_Insert( 3.00, 'stores.dbf',
											   'id			NUMBER,
												manager_id	NUMBER,
												code		CHAR( 50 ),
												license		CHAR( 25 ),
												name		CHAR( 100 ),
												owner		CHAR( 100 ),
												email		CHAR( 50 ),
												company		CHAR( 100 ),
												address		CHAR( 100 ),
												city		CHAR( 50 ),
												state		CHAR( 50 ),
												zip			CHAR( 50 ),
												phone		CHAR( 50 ),
												fax			CHAR( 50 ),
												country		CHAR( 50 ),
												wtunits		CHAR( 50 ),
												baskexp		NUMBER,
												pgrp_ovlp	CHAR( 10 ),
												tax_id		NUMBER,
												currncy_id	NUMBER,
												ui_id		NUMBER,
												mnt_warn	MEMO,
												mnt_close	MEMO,
												mnt_time	NUMBER,
												mnt_no_new	NUMBER,
												omin_quant	NUMBER,
												omin_price	NUMBER( 10.2 ),
												omin_all	BOOL,
												omin_msg	MEMO' ) }">
	<MvEVAL EXPR = "{ Domain_DB_Index_Insert( 2.00, 'Stores', 'stores.dbf', 'str_id.mvx', 'Stores.d.id', 'unique, ascending' ) }">
	<MvEVAL EXPR = "{ Domain_DB_Index_Insert( 2.00, 'Stores', 'stores.dbf', 'str_code.mvx', 'toupper( Stores.d.code )', 'nounique, ascending, string' ) }">
	<MvEVAL EXPR = "{ Domain_DB_Index_Insert( 2.00, 'Stores', 'stores.dbf', 'str_lic.mvx', 'Stores.d.license', 'nounique, ascending, string' ) }">
			 

	<MvCOMMENT>
	|
	| stores.dbf
	|
	| 4.00: Added "d_set		BOOL"
	| 4.00: Added "d_mod		BOOL"
	| 4.00: Added "d_pay		BOOL"
	| 4.00: Added "d_ship		BOOL"
	| 4.00: Added "d_ful		BOOL"
	| 4.00: Added "d_usr		BOOL"
	| 4.00: Added "maxstores	NUMBER"
	| 4.00: Added "lo_time		NUMBER"
	| 4.00: Added "li_trys		NUMBER"
	|
	</MvCOMMENT>


	<MvEVAL EXPR = "{ Domain_DB_Change_Insert( 4.00, 'domain.dbf', 'name		CHAR( 100 ),
														license		CHAR( 25 ),
														version		CHAR( 10 ),
														owner		CHAR( 100 ),
														email		CHAR( 50 ),
														company		CHAR( 100 ),
														address		CHAR( 100 ),
														city		CHAR( 50 ),
														state		CHAR( 50 ),
														zip			CHAR( 50 ),
														country		CHAR( 50 ),
														phone		CHAR( 50 ),
														fax			CHAR( 50 ),
														mm_url		CHAR( 254 ),
														mm_surl		CHAR( 254 ),
														admin_surl	CHAR( 254 ),
														image_root	CHAR( 254 ),
														base_url	CHAR( 254 ),
														base_surl	CHAR( 254 ),
														mod_root	CHAR( 254 ),
														mod_sroot	CHAR( 254 ),
														admexp		NUMBER,
														mailhost	CHAR ( 254 ),
														mail_angl 	BOOL,
														ui_id		NUMBER,
														d_set		BOOL,
														d_mod		BOOL,
														d_pay		BOOL,
														d_ship		BOOL,
														d_ful		BOOL,
														d_usr		BOOL,
														d_log		BOOL,
														d_sys		BOOL,
														d_utl		BOOL,
														maxstores	NUMBER,
														lo_time		NUMBER,
														li_trys		NUMBER,
														upgd_ignr	CHAR( 10 )' ) }">

	<MvCOMMENT>
	|
	| users.dbf
	|
	| 4.00: Added "page_len		NUMBER"
	| 4.00: Added "t_fails		NUMBER"
	| 4.00: Added "c_fails		NUMBER"
	| 4.00: Added "lo_date		CHAR(50)"
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Domain_DB_Change_Insert( 4.00, 'users.dbf',
											   'id			NUMBER,
												parent_id	NUMBER,
												name		CHAR( 40 ),
												password	CHAR( 40 ),
												page_len	NUMBER,
												admin		BOOL,
												create		BOOL,
												smod		BOOL,
												t_fails		NUMBER,
												c_fails		NUMBER,
												lo_date		CHAR(50)' ) }">
	<MvEVAL EXPR = "{ Domain_DB_Index_Insert( 2.00, 'Users', 'users.dbf', 'usr_id.mvx', 'Users.d.id', 'unique, ascending' ) }">
	<MvEVAL EXPR = "{ Domain_DB_Index_Insert( 2.00, 'Users', 'users.dbf', 'usr_name.mvx', 'toupper( Users.d.name )', 'nounique, ascending, string' ) }">

	<MvCOMMENT>
	|
	| modules.dbf
	|
	| 4.00: Added "active		BOOL"
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Domain_DB_Change_Insert( 4.00, 'modules.dbf',
											   'id			NUMBER,
												type		CHAR( 15 ),
												code		CHAR( 50 ),
												name		CHAR( 100 ),
												provider	CHAR( 100 ),
												version		CHAR( 20 ),
												module		CHAR( 100 ),
												refcount	NUMBER,
												active		BOOL' ) }">
	<MvEVAL EXPR = "{ Domain_DB_Index_Insert( 2.00, 'Modules', 'modules.dbf', 'mod_id.mvx', 'Modules.d.id', 'unique, ascending' ) }">
	<MvEVAL EXPR = "{ Domain_DB_Index_Insert( 2.00, 'Modules', 'modules.dbf', 'mod_code.mvx', 'Modules.d.code', 'nounique, ascending, string' ) }">
	<MvEVAL EXPR = "{ Domain_DB_Index_Insert( 2.00, 'Modules', 'modules.dbf', 'mod_type.mvx', 'Modules.d.type', 'nounique, ascending' ) }">


	<MvCOMMENT>
	|
	| Domain Module Installation List
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Domain_Module_New_Build_List( 'MODULES.lst' ) }">


	<MvCOMMENT>
	|
	| Domain Privileges
	| *********************************************************************************************
	|
	| 3.00: Added STCT: Countries
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Domain_Privilege_New_Insert( 3.00, 'STCT' ) }">

	<MvCOMMENT>
	|
	| *********************************************************************************************
	|											STORE CHANGES
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvCOMMENT>
	|
	| StoreKeys
	| *********************************************************************************************
	|
	| 2.20: Added "BasketCharges"
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_Key_New_Insert( 2.20, 'BasketCharges', 1 ) }">

	<MvCOMMENT>
	|
	| storekey.mvx
	| *********************************************************************************************
	|
	| 2.20: Removed unique constraint
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.20, 'StoreKeys', 'storekey.dbf', 'storekey.mvx', 'StoreKeys.d.type', 'nounique, ascending' ) }">

	<MvCOMMENT>
	|
	| attr.dbf
	| *********************************************************************************************
	|
	| 2.10: Added "cost NUMBER( 10.2 )"
	| 3.00: Added "image CHAR( 254 )"
	| 4.00: Addid indices atr_at_p.mvx and atr_at_p.mvx
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 3.00, 'attr.dbf',
											 'id			NUMBER,
											  product_id	NUMBER,
											  default_id	NUMBER,
											  order			NUMBER,
											  code			CHAR( 50 ),
											  type			CHAR( 20 ),
											  prompt		MEMO,
											  price			NUMBER( 10.2 ),
											  cost			NUMBER( 10.2 ),
											  required		BOOL,
											  image			CHAR( 254 )' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Attributes', 'attr.dbf', 'atr_id.mvx', 'Attributes.d.id', 'unique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Attributes', 'attr.dbf', 'atr_code.mvx', 'Attributes.d.product_id $ \':\' $ toupper( Attributes.d.code )', 'nounique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Attributes', 'attr.dbf', 'atr_prod.mvx', 'Attributes.d.product_id $ \':\' $ padl( Attributes.d.order, 10, \'0\' )', 'nounique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 4.00, 'Attributes', 'attr.dbf', 'atr_at_p.mvx', 'Attributes.d.product_id $ \':\' $ padl( Attributes.d.attemp_id, 10, \'0\' ) $ \':\' $ padl( Attributes.d.order, 10, \'0\' )', 'nounique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 4.00, 'Attributes', 'attr.dbf', 'atr_at_i.mvx', 'Attributes.d.attemp_id', 'nounique, ascending' ) }">


	<MvCOMMENT>
	|
	| opts.dbf
	| *********************************************************************************************
	|
	| 2.10: Added "cost NUMBER( 10.2 )"
	| 3.00: Added "image CHAR( 254 )"
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 3.00, 'opts.dbf',
											  'id			NUMBER,
											   attr_id		NUMBER,
											   order		NUMBER,
											   code			CHAR( 50 ),
											   prompt		MEMO,
											   price		NUMBER( 10.2 ),
											   cost			NUMBER( 10.2 ),
											   image		CHAR( 254 )' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Options', 'opts.dbf', 'opt_id.mvx', 'Options.d.id', 'unique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Options', 'opts.dbf', 'opt_code.mvx', 'Options.d.attr_id $ \':\' $ toupper( Options.d.code )', 'nounique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Options', 'opts.dbf', 'opt_attr.mvx', 'Options.d.attr_id $ \':\' $ padl( Options.d.order, 10, \'0\' )', 'nounique, ascending' ) }">

	<MvCOMMENT>
	|
	| baskchrg.dbf
	| *********************************************************************************************
	|
	| 2.20: Created
	| 2.22: Added "module_id NUMBER"
	| 2.22: Added "tax_exempt BOOL"
	| 4.00: Changed "amount" and "disp_amt" to 10.3
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_New_Insert( 2.20, 'baskchrg.dbf',
										   'basket_id	NUMBER,
											charge_id   NUMBER,
											type		CHAR( 50 ),
											desc        CHAR( 100 ),
											amount		NUMBER( 10.2 ),
											disp_amt	NUMBER( 10.2 )' ) }">

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 2.22, 'baskchrg.dbf',
											  'basket_id	NUMBER,
											   charge_id	NUMBER,
											   module_id	NUMBER,
											   type			CHAR( 50 ),
											   desc			CHAR( 100 ),
											   amount		NUMBER( 10.2 ),
											   disp_amt		NUMBER( 10.2 ),
											   tax_exempt	BOOL' ) }">

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 4.00, 'baskchrg.dbf',
											  'basket_id	NUMBER,
											   charge_id	NUMBER,
											   module_id	NUMBER,
											   type			CHAR( 50 ),
											   desc			CHAR( 100 ),
											   amount		NUMBER( 10.3 ),
											   disp_amt		NUMBER( 10.3 ),
											   tax_exempt	BOOL' ) }">

	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.20, 'BasketCharges', 'baskchrg.dbf', 'bchg_bid.mvx', 'BasketCharges.d.basket_id $ \':\' $ padl( BasketCharges.d.charge_id, 10, \'0\' )', 'unique, ascending, string' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.20, 'BasketCharges', 'baskchrg.dbf', 'bchg_typ.mvx', 'BasketCharges.d.basket_id $ \':\' $ BasketCharges.d.type $ \':\' $ padl( BasketCharges.d.charge_id, 10, \'0\' )', 'unique, ascending, string' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.22, 'BasketCharges', 'baskchrg.dbf', 'bchg_mod.mvx', 'BasketCharges.d.basket_id $ \':\' $ BasketCharges.d.module_id $ \':\' $ padl( BasketCharges.d.charge_id, 10, \'0\' )', 'unique, ascending, string' ) }">

	<MvCOMMENT>
	|
	| ordrchrg.dbf
	| *********************************************************************************************
	|
	| 2.20: Added
	| 2.22: Added "module_id NUMBER"
	| 2.22: Added "tax_exempt BOOL"
	| 4.00: Changed "amount" and "disp_amt" to 10.3
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_New_Insert( 2.20, 'ordrchrg.dbf',
										   'order_id	NUMBER,
											charge_id   NUMBER,
											type		CHAR( 50 ),
											desc        CHAR( 100 ),
											amount		NUMBER( 10.2 ),
											disp_amt	NUMBER( 10.2 )' ) }">

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 2.22, 'ordrchrg.dbf',
											  'order_id		NUMBER,
											   charge_id	NUMBER,
											   module_id	NUMBER,
											   type			CHAR( 50 ),
											   desc			CHAR( 100 ),
											   amount		NUMBER( 10.2 ),
											   disp_amt		NUMBER( 10.2 ),
											   tax_exempt	BOOL' ) }">

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 3.01, 'ordrchrg.dbf',
											  'order_id		NUMBER,
											   charge_id	NUMBER,
											   module_id	NUMBER,
											   type			CHAR( 50 ),
											   desc			CHAR( 100 ),
											   amount		NUMBER( 10.2 ),
											   disp_amt		NUMBER( 10.2 ),
											   tax_exempt	BOOL' ) }">
											   
	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 4.00, 'ordrchrg.dbf',
											  'order_id		NUMBER,
											   charge_id	NUMBER,
											   module_id	NUMBER,
											   type			CHAR( 50 ),
											   desc			CHAR( 100 ),
											   amount		NUMBER( 10.3 ),
											   disp_amt		NUMBER( 10.3 ),
											   tax_exempt	BOOL' ) }">

	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.20, 'OrderCharges', 'ordrchrg.dbf', 'ochg_oid.mvx', 'OrderCharges.d.order_id $ \':\' $ padl( OrderCharges.d.charge_id, 10, \'0\' )', 'unique, ascending, string' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.20, 'OrderCharges', 'ordrchrg.dbf', 'ochg_typ.mvx', 'OrderCharges.d.order_id $ \':\' $ OrderCharges.d.type $ \':\' $ padl( OrderCharges.d.charge_id, 10, \'0\' )', 'unique, ascending, string' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.22, 'OrderCharges', 'ordrchrg.dbf', 'ochg_mod.mvx', 'OrderCharges.d.basket_id $ \':\' $ OrderCharges.d.module_id $ \':\' $ padl( OrderCharges.d.charge_id, 10, \'0\' )', 'unique, ascending, string' ) }">

	<MvCOMMENT>
	|
	| std_fld.dbf
	| *********************************************************************************************
	|
	| 2.20: Created
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_New_Insert( 2.20, 'std_fld.dbf',
										   'billing		CHAR( 1 ),
											mode_fname	CHAR( 1 ),
											mode_lname	CHAR( 1 ),
											mode_email	CHAR( 1 ),
											mode_comp	CHAR( 1 ),
											mode_phone	CHAR( 1 ),
											mode_fax	CHAR( 1 ),
											mode_addr	CHAR( 1 ),
											mode_city	CHAR( 1 ),
											mode_state	CHAR( 1 ),
											mode_zip	CHAR( 1 ),
											mode_cntry	CHAR( 1 )' ) }">
										
	<MvCOMMENT>
	|
	| products.dbf
	| *********************************************************************************************
	|
	| 3.00: Added "active BOOL"
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 3.00, 'products.dbf', 
											 'id			NUMBER,		
											  catcount		NUMBER,		
											  agrpcount		NUMBER,		
											  pgrpcount		NUMBER,		
											  order			NUMBER,		
											  code			CHAR( 50 ),	
											  name			CHAR( 100 ),
											  thumbnail		CHAR( 254 ),
											  image			CHAR( 254 ),
											  price			NUMBER( 10.2 ),
											  cost			NUMBER( 10.2 ),
											  desc			MEMO,		
											  weight		NUMBER( 10.2 ),
											  taxable		BOOL,		
											  active		BOOL' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Products', 'products.dbf', 'prd_id.mvx', 'Products.d.id', 'unique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Products', 'products.dbf', 'prd_ord.mvx', 'padl( Products.d.order, 10, \'0\' )', 'nounique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Products', 'products.dbf', 'prd_ccnt.mvx', 'Products.d.catcount $ \':\' $ padl( Products.d.order, 10, \'0\' )', 'nounique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Products', 'products.dbf', 'prd_gcnt.mvx', 'Products.d.agrpcount $ \':\' $ padl( Products.d.id, 10, \'0\' )', 'nounique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Products', 'products.dbf', 'prd_pgct.mvx', 'Products.d.pgrpcount $ \':\' $ padl( Products.d.id, 10, \'0\' )', 'nounique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Products', 'products.dbf', 'prd_code.mvx', 'toupper( Products.d.code )', 'nounique, ascending, string' ) }">

	<MvCOMMENT>
	|
	| str_cty.dbf
	| *********************************************************************************************
	|
	| 3.00: Created
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_New_Insert( 3.00, 'str_cty.dbf',
										   'id		NUMBER,
											name	CHAR( 50 ),
											alpha	CHAR( 02 ),
											numeric	NUMBER' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 3.00, 'StoreCountries', 'str_cty.dbf', 'str_cty.mvx', 'StoreCountries.d.alpha', 'nounique, ascending, string' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 3.00, 'StoreCountries', 'str_cty.dbf', 'str_ctyn.mvx', 'toupper( StoreCountries.d.name )', 'nounique, ascending, string' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 3.00, 'StoreCountries', 'str_cty.dbf', 'str_ctyi.mvx', 'StoreCountries.d.id', 'nounique, ascending' ) }">

	<MvCOMMENT>
	|
	| cats.dbf
	| *********************************************************************************************
	|
	| 3.00: Added "active BOOL"
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 3.00, 'cats.dbf',
											  'id			NUMBER,
											   parent_id	NUMBER,
											   agrpcount	NUMBER,
											   order		NUMBER,
											   code			CHAR( 50 ),
											   name			CHAR( 100 ),
											   active		BOOL' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Categories', 'cats.dbf', 'cat_id.mvx', 'Categories.d.id', 'unique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Categories', 'cats.dbf', 'cat_code.mvx', 'toupper( Categories.d.code )', 'nounique, ascending, string' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Categories', 'cats.dbf', 'cat_prnt.mvx', 'Categories.d.parent_id $ \':\' $ padl( Categories.d.order, 10, \'0\' )', 'nounique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Categories', 'cats.dbf', 'cat_ord.mvx', 'padl( Categories.d.order, 10, \'0\' )', 'nounique, ascending' ) }">

	<MvCOMMENT>
	|
	| basklist.dbf
	| *********************************************************************************************
	|
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 3.00, 'basklist.dbf',
											  'session_id	CHAR( 40 ),
											   cust_id     NUMBER,
											   basket_id	NUMBER,
											   lastupdate	CHAR( 10 ),
											   order_id		NUMBER,
											   order_proc	BOOL,
											   ship_fname	CHAR( 50 ),
											   ship_lname	CHAR( 50 ),
											   ship_email	CHAR( 50 ),
											   ship_comp	CHAR( 50 ),
											   ship_phone	CHAR( 50 ),
											   ship_fax		CHAR( 50 ),
											   ship_addr	CHAR( 100 ),
											   ship_city	CHAR( 50 ),
											   ship_state	CHAR( 50 ),
											   ship_zip		CHAR( 50 ),
											   ship_cntry	CHAR( 50 ),
											   bill_fname	CHAR( 50 ),
											   bill_lname	CHAR( 50 ),
											   bill_email	CHAR( 50 ),
											   bill_comp	CHAR( 50 ),
											   bill_phone	CHAR( 50 ),
											   bill_fax		CHAR( 50 ),
											   bill_addr	CHAR( 100 ),
											   bill_city	CHAR( 50 ),
											   bill_state	CHAR( 50 ),
											   bill_zip		CHAR( 50 ),
											   bill_cntry	CHAR( 50 ),
											   tax			NUMBER( 10.2 ),
											   shipping		NUMBER( 10.2 ),
											   ship_id		NUMBER,
											   ship_data	CHAR( 100 ),
											   pay_id		NUMBER,
											   pay_data		CHAR( 100 ),
											   total		NUMBER( 10.2 )' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'BasketList', 'basklist.dbf', 'blst_ses.mvx', 'BasketList.d.session_id', 'nounique, ascending, string' ) }">

	<MvCOMMENT>
	|
	| baskets.dbf
	| *********************************************************************************************
	|
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 3.00, 'baskets.dbf',
											  'id			NUMBER,
											   line_id		NUMBER,
											   product_id	NUMBER,
											   code			CHAR( 50 ),
											   name			CHAR( 100 ),
											   price		NUMBER( 10.2 ),
											   weight		NUMBER( 10.2 ),
											   taxable		BOOL,
											   upsold		BOOL,
											   quantity		NUMBER' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Baskets', 'baskets.dbf', 'bsk_id.mvx', 'Baskets.d.id $ \':\' $ padl( Baskets.d.line_id, 10, \'0\' )', 'nounique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'Baskets', 'baskets.dbf', 'bsk_line.mvx', 'Baskets.d.line_id', 'unique, ascending' ) }">

	<MvCOMMENT>
	|
	| usp_req.mvx
	| *********************************************************************************************
	|
	| 3.00: Created
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 3.00, 'UpsellXProduct', 'upslprod.dbf', 'usp_req.mvx', 'UpsellXProduct.d.req_prod $ \':\' $ padl( UpsellXProduct.d.product_id, 10, \'0\' )', 'nounique, ascending' ) }">

	<MvCOMMENT>
	|
	| upslopts.dbf
	| *********************************************************************************************
	|
	| 3.00: Created
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_New_Insert( 3.00, 'upslopts.dbf',
										   'prod_shown	NUMBER,
											prod_sell	NUMBER' ) }">

	<MvCOMMENT>
	|
	| relprod.dbf
	| *********************************************************************************************
	|
	| 3.00: Created
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_New_Insert( 3.00, 'relprod.dbf',
										   'product_id	NUMBER,
											relprod_id	NUMBER' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 3.00, 'RelatedProducts', 'relprod.dbf', 'relprodp.mvx', 'RelatedProducts.d.product_id $ \':\' $ padl( RelatedProducts.d.relprod_id, 10, \'0\' )', 'nounique, ascending' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 3.00, 'RelatedProducts', 'relprod.dbf', 'relprodr.mvx', 'RelatedProducts.d.relprod_id', 'nounique, ascending' ) }">

	<MvCOMMENT>
	|
	| baskopts.dbf
	| *********************************************************************************************
	|
	| 3.00: Added "data_long MEMO"
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 3.00, 'baskopts.dbf',
											  'line_id		NUMBER,
											   attr_id		NUMBER,
											   attr_code	CHAR( 50 ),
											   option_id	NUMBER,
											   opt_code		CHAR( 50 ),
											   price		NUMBER( 10.2 ),
											   data			CHAR( 254 ),
											   data_long	MEMO' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'BasketOptions', 'baskopts.dbf', 'bopt_ln.mvx', 'BasketOptions.d.line_id $ \':\' $ padl( BasketOptions.d.attr_id, 10, \'0\' )', 'nounique, ascending' ) }">

	<MvCOMMENT>
	|
	| ordopts.dbf
	| *********************************************************************************************
	|
	| 3.00: Added "data_long MEMO"
	|
	</MvCOMMENT>

	<MvEVAL EXPR = "{ Store_DB_Change_Insert( 3.00, 'ordopts.dbf',
											  'line_id		NUMBER,
											   attr_id		NUMBER,
											   attr_code	CHAR( 50 ),
											   option_id	NUMBER,
											   opt_code		CHAR( 50 ),
											   price		NUMBER( 10.2 ),
											   data			CHAR( 254 ),
											   data_long	MEMO' ) }">
	<MvEVAL EXPR = "{ Store_DB_Index_Insert( 2.00, 'OrderOptions', 'ordopts.dbf', 'oop_line.mvx', 'OrderOptions.d.line_id $ \':\' $ padl( OrderOptions.d.attr_id, 10, \'0\' )', 'nounique, ascending' ) }">

	<MvCOMMENT> Inventory </MvCOMMENT>
	<MvDO FILE = "{ g.Module_Version }" NAME = "l.inv_enabled" VALUE = "{ IsEnabled( 'INV' ) }">
	<MvIF EXPR = "{ l.inv_enabled }">
		<MvDO FILE = "{ g.Module_Feature_INV_AD }" NAME = "l.null" VALUE = "{ INV_Upgrade_Setup_State() }">
	</MvIF>

	<MvCOMMENT> Affiliates </MvCOMMENT>
	<MvDO FILE = "{ g.Module_Version }" NAME = "l.aff_enabled" VALUE = "{ IsEnabled( 'AFF' ) }">
	<MvIF EXPR = "{ l.aff_enabled }">
		<MvDO FILE = "{ g.Module_Feature_AFF }" NAME = "l.null" VALUE = "{ AFF_Upgrade_Setup_State() }">
	</MvIF>

	<MvCOMMENT> Attribute Templates </MvCOMMENT>
	<MvDO FILE = "{ g.Module_Version }" NAME = "l.att_enabled" VALUE = "{ IsEnabled( 'ATT' ) }">
	<MvIF EXPR = "{ l.att_enabled }">
		<MvDO FILE = "{ g.Module_Feature_ATT }" NAME = "l.null" VALUE = "{ ATT_Upgrade_Setup_State() }">
	</MvIF>

	<MvCOMMENT> Statistics </MvCOMMENT>
	<MvDO FILE = "{ g.Module_Feature_STA }" NAME = "l.null" VALUE = "{ STA_Upgrade_Setup_State() }">

	<MvCOMMENT> Step By Step Wizard </MvCOMMENT>
	<MvDO FILE = "{ g.Module_Feature_STP_AD }" NAME = "l.null" VALUE = "{ STP_Upgrade_Setup_State() }">

	<MvCOMMENT> Step By Step Wizard </MvCOMMENT>
	<MvDO FILE = "{ g.Module_Feature_NOT }" NAME = "l.null" VALUE = "{ NOT_Upgrade_Setup_State() }">

</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Status_Overall" PARAMETERS = "operation, store_name, recno, totrec" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.percent_completed" VALUE = "{ rnd( ( l.recno * 100 ) / l.totrec, 0 ) }">
	<MvIF EXPR = "{ l.percent_completed GT 99 }">
		<MvASSIGN NAME = "l.percent_completed" VALUE = "99">
	</MvIF>
	<MvASSIGN NAME = "l.percent_remaining" VALUE = "{ rnd( 100 - l.percent_completed, 0 ) }">

	<TABLE BORDER = 0 WIDTH = "100%">
	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00004">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Current Operation:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Derzeitiger Arbeitsvorgang:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		</FONT>
	</TD><TD>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvIF EXPR = "{ l.operation EQ 'domain_misc' }">
			<MvLOCALIZED ID = "MER-UPG-00126">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Initializing</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Initialisieren</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'domain_db' }">
			<MvLOCALIZED ID = "MER-UPG-00005">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upgrading Domain Databases</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Upgrade der Domain-Datenbanken</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'domain_db_index' }">
			<MvLOCALIZED ID = "MER-UPG-00006">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upgrading Domain Indices</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Upgrade der Domain-Verzeichnisse</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'store_db' }">
			<MvLOCALIZED ID = "MER-UPG-00007">
				<MvLOCALIZED-TOKEN NAME = "store_name" VALUE = "{ l.store_name }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upgrading Databases for Store <B>%store_name%</B></MvLOCALIZED-TEXT>				
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Upgrade der Datenbanken f�r Laden "<B>%store_name%</B>" </MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'store_db_index' }">
			<MvLOCALIZED ID = "MER-UPG-00008">
				<MvLOCALIZED-TOKEN NAME = "store_name" VALUE = "{ l.store_name }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upgrading Indices for Store <B>%store_name%</B></MvLOCALIZED-TEXT>				
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Upgrade der Verzeichnisse f�r Laden "<B>%store_name%</B>"</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ ( l.operation EQ 'domain_rename_db' ) OR
						( l.operation EQ 'domain_rename_index' ) }">
			<MvLOCALIZED ID = "MER-UPG-00009">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Renaming Domain Temporary Files</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Umbenennen der tempor�ren Dateien der Domain</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'domain_cleanup' }">
			<MvLOCALIZED ID = "MER-UPG-00010">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Cleaning up Domain Temporary Files</MvLOCALIZED-TEXT>				
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bereinigen der tempor�ren Dateien der Domain</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ ( l.operation EQ 'store_rename_db' ) OR
						( l.operation EQ 'store_rename_index' ) }">
			<MvLOCALIZED ID = "MER-UPG-00011">
				<MvLOCALIZED-TOKEN NAME = "store_name" VALUE = "{ l.store_name }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Renaming Temporary Files for Store <B>%store_name%</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Umbenennen der tempor�ren Dateien f�r Laden "<B>%store_name%</B>"</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'store_cleanup' }">
			<MvLOCALIZED ID = "MER-UPG-00012">
				<MvLOCALIZED-TOKEN NAME = "store_name" VALUE = "{ l.store_name }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Cleaning up Temporary Files for Store <B>%store_name%</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Bereinigen der tempor�ren Dateien f�r Laden "<B>%store_name%</B>"</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'store_key' }">
			<MvLOCALIZED ID = "MER-UPG-00127">
				<MvLOCALIZED-TOKEN NAME = "store_name" VALUE = "{ l.store_name }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Adding new key records for store <B>%store_name%</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Hinzuf�gen von neuen Schl�sseldatens�tzen f�r Laden "<B>%store_name%</B>"</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'domain_key' }">
			<MvLOCALIZED ID = "MER-UPG-00146">
				<MvLOCALIZED-TOKEN NAME = "domain_name" VALUE = "{ l.domain_name }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Adding new key records for domain <B>%domain_name%</B></MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'domain_priv' }">
			<MvLOCALIZED ID = "MER-UPG-00128">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Adding new Privileges</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Hinzuf�gen von neuen Rechten</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'domain_modules' }">
			<MvLOCALIZED ID = "MER-UPG-00013">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upgrading Global Module Settings</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Upgrade der globalen Moduleinstellungen</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'store_modules' }">
			<MvLOCALIZED ID = "MER-UPG-00014">
				<MvLOCALIZED-TOKEN NAME = "store_name" VALUE = "{ l.store_name }">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upgrading Module Settings for Store <B>%store_name%</B></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Upgrade der Moduleinstellungen f�r Laden "<B>%store_name%</B>" </MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'domain_module_new' }">
			<MvLOCALIZED ID = "MER-UPG-00015">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Installing New Modules</MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Installieren neuer Module</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>
		
		<MvIF EXPR = "{ l.operation EQ 'domain_copy_scripts' }">
			<MvLOCALIZED ID = "MER-UPG-00015">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US">Copying Script Files</MvLOCALIZED-TEXT>
			</MvLOCALIZED>
		</MvIF>
		
		</FONT>
	</TD></TR>
	
	<TR><TD NOWRAP>
		<FONT FACE = "Arial, Helvetica" SIZE = "-1">
		<MvLOCALIZED ID = "MER-UPG-00016">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>Overall Progress:</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Gesamtstatus:</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>
		</FONT>
	</TD><TD WIDTH = "100%">
		<TABLE BORDER = 0 CELLPADDING = 4 WIDTH = "100%">
		<TR><TD ALIGN = "right" VALIGN = "middle">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<B>0%</B>
			</FONT>
		</TD><TD BGCOLOR = "blue" ALIGN = "center" WIDTH = "{ l.percent_completed $ '%' }">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1" COLOR = "white">
			<B><MvEVAL EXPR = "{ rnd( l.percent_completed, 0 ) }">%</B>
			</FONT>
		</TD><TD WIDTH = "{ l.percent_remaining $ '%' }">
			&nbsp;
		</TD><TD ALIGN = "left" VALIGN = "middle">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<B>100%</B>
			</FONT>
		</TD></TR>
		</TABLE>
	</TD></TR>
	</TABLE>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Clear_Status" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<SCRIPT LANGUAGE = "JavaScript">
<!--
parent.Info.Upgrade_Clear_Status();
//-->
	</SCRIPT>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Status_DB" PARAMETERS = "operation, filename, recno, totrec" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvLOCALIZED NAME = "l.action_prompt" ID = "MER-UPG-00017">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Action:</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Aktion:</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvIF EXPR = "{ l.operation EQ 'new' }">
		<MvLOCALIZED NAME = "l.action_text" ID = "MER-UPG-00018">
			<MvLOCALIZED-TOKEN NAME = "filename" VALUE = "{ l.filename }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Creating database <B>%filename%</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Erstellen der Datenbank "<B>%filename%</B>"</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
	</MvIF>

	<MvIF EXPR = "{ l.operation EQ 'change' }">
		<MvLOCALIZED NAME = "l.action_text" ID = "MER-UPG-00019">
			<MvLOCALIZED-TOKEN NAME = "filename" VALUE = "{ l.filename }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Modifying database <B>%filename%</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">�ndern der Datenbank "<B>%filename%</B>"</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
	</MvIF>

	<MvIF EXPR = "{ l.recno EQ -1 }">
		<MvASSIGN NAME = "l.record_prompt" VALUE = "">
		<MvASSIGN NAME = "l.record_text" VALUE = "">
	<MvELSE>
		<MvLOCALIZED NAME = "l.record_prompt" ID = "MER-UPG-00020">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Record:</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Datensatz:</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvLOCALIZED NAME = "l.record_text" ID = "MER-UPG-00021">
			<MvLOCALIZED-TOKEN NAME = "recno" VALUE = "{ l.recno }">
			<MvLOCALIZED-TOKEN NAME = "totrec" VALUE = "{ l.totrec }">

			<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>%recno%</B> of <B>%totrec%</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>%recno%</B> von <B>%totrec%</B></MvLOCALIZED-TEXT>
		</MvLOCALIZED>
	</MvIF>

	<MvLOCALIZED NAME = "l.progress_prompt" ID = "MER-UPG-00022">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Progress:</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Status:</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvEVAL EXPR = "{ '<SCRIPT LANGUAGE = "JavaScript">
<!--
parent.Info.Upgrade_Draw_Status( \'' $ l.action_prompt $ '\', \'' $ l.action_text $ '\', \'' $ l.record_prompt $ '\', \'' $ l.record_text $ '\', \'' $ l.progress_prompt $ '\', \'' $ l.recno $ '\', \'' $ l.totrec $ '\' );
//-->
	</SCRIPT>' }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Status_Index" PARAMETERS = "operation, db_name, index_name" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvLOCALIZED NAME = "l.action_prompt" ID = "MER-UPG-00023">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Action:</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Aktion:</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvIF EXPR = "{ l.operation EQ 'new' }">
		<MvLOCALIZED NAME = "l.action_text" ID = "MER-UPG-00024">
			<MvLOCALIZED-TOKEN NAME = "index_name" VALUE = "{ l.index_name }">
			<MvLOCALIZED-TOKEN NAME = "db_name" VALUE = "{ l.db_name }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Creating index <B>%index_name%</B> on database <B>%db_name%</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Erstellen des Indexes "<B>%index_name%</B>" in der Datenbank "<B>%db_name%</B>"</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
	</MvIF>

	<MvIF EXPR = "{ l.operation EQ 'index' }">
		<MvLOCALIZED NAME = "l.action_text" ID = "MER-UPG-00025">
			<MvLOCALIZED-TOKEN NAME = "index_name" VALUE = "{ l.index_name }">
			<MvLOCALIZED-TOKEN NAME = "db_name" VALUE = "{ l.db_name }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Creating index <B>%index_name%</B> on database <B>%db_name%</B></MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Erstellen des Indexes "<B>%index_name%</B>" in der Datenbank "<B>%db_name%</B>"</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
	</MvIF>

	<MvASSIGN NAME = "l.record_prompt" VALUE = "">
	<MvASSIGN NAME = "l.record_text" VALUE = "">
	<MvASSIGN NAME = "l.progress_prompt" VALUE = "">

	<MvEVAL EXPR = "{ '<SCRIPT LANGUAGE = "JavaScript">
<!--
parent.Info.Upgrade_Draw_Status( \'' $ l.action_prompt $ '\', \'' $ l.action_text $ '\', \'' $  l.record_prompt $ '\', \'' $ l.record_text $ '\', \'' $ l.progress_prompt $ '\', -1, -1 );
//-->
	</SCRIPT>' }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Status_Rename" PARAMETERS = "file" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvLOCALIZED NAME = "l.action_prompt" ID = "MER-UPG-00026">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Action:</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Aktion:</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvLOCALIZED NAME = "l.action_text" ID = "MER-UPG-00027">
		<MvLOCALIZED-TOKEN NAME = "file" VALUE = "{ l.file }">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Renaming <B>%file%</B></MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Umbenennen der Datei <B>%file%</B></MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvASSIGN NAME = "l.record_prompt" VALUE = "">
	<MvASSIGN NAME = "l.record_text" VALUE = "">
	<MvASSIGN NAME = "l.progress_prompt" VALUE = "">

	<MvEVAL EXPR = "{ '<SCRIPT LANGUAGE = "JavaScript">
<!--
parent.Info.Upgrade_Draw_Status( \'' $ l.action_prompt $ '\', \'' $ l.action_text $ '\', \'' $  l.record_prompt $ '\', \'' $ l.record_text $ '\', \'' $ l.progress_prompt $ '\', -1, -1 );
//-->
	</SCRIPT>' }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Status_Privilege" PARAMETERS = "privilege, name" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvLOCALIZED NAME = "l.action_prompt" ID = "MER-UPG-00026">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Action:</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Aktion:</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvLOCALIZED NAME = "l.action_text" ID = "MER-UPG-00129">
		<MvLOCALIZED-TOKEN NAME = "privilege" VALUE = "{ l.name }">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Adding privilege for <B>%privilege%</B></MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Hinzuf�gen eines Rechts f�r "<B>%privilege%</B>"</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvASSIGN NAME = "l.record_prompt" VALUE = "">
	<MvASSIGN NAME = "l.record_text" VALUE = "">
	<MvASSIGN NAME = "l.progress_prompt" VALUE = "">

	<MvEVAL EXPR = "{ '<SCRIPT LANGUAGE = "JavaScript">
<!--
parent.Info.Upgrade_Draw_Status( \'' $ l.action_prompt $ '\', \'' $ l.action_text $ '\', \'' $ l.record_prompt $ '\', \'' $ l.record_text $ '\', \'' $ l.progress_prompt $ '\', -1, -1 );
//-->
	</SCRIPT>' }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Status_StoreKey" PARAMETERS = "type" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvLOCALIZED NAME = "l.action_prompt" ID = "MER-UPG-00130">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Action:</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Aktion:</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvLOCALIZED NAME = "l.action_text" ID = "MER-UPG-00131">
		<MvLOCALIZED-TOKEN NAME = "storekey_type" VALUE = "{ l.type }">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Adding key record for <B>%storekey_type%</B></MvLOCALIZED-TEXT>		
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Hinzuf�gen eines neuen Schl�sseldatensatzes f�r "<B>%storekey_type%</B>"</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvASSIGN NAME = "l.record_prompt" VALUE = "">
	<MvASSIGN NAME = "l.record_text" VALUE = "">
	<MvASSIGN NAME = "l.progress_prompt" VALUE = "">

	<MvEVAL EXPR = "{ '<SCRIPT LANGUAGE = "JavaScript">
<!--
parent.Info.Upgrade_Draw_Status( \'' $ l.action_prompt $ '\', \'' $  l.action_text $ '\', \'' $  l.record_prompt $ '\', \'' $ l.record_text $ '\', \'' $ l.progress_prompt $ '\', -1, -1 );
//-->
	</SCRIPT>' }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Status_DomainKey" PARAMETERS = "type" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvLOCALIZED NAME = "l.action_prompt" ID = "MER-UPG-00130">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Action:</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Aktion:</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvLOCALIZED NAME = "l.action_text" ID = "MER-UPG-00147">
		<MvLOCALIZED-TOKEN NAME = "domainkey_type" VALUE = "{ l.type }">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Adding key record for <B>%domainkey_type%</B></MvLOCALIZED-TEXT>		
	</MvLOCALIZED>

	<MvASSIGN NAME = "l.record_prompt" VALUE = "">
	<MvASSIGN NAME = "l.record_text" VALUE = "">
	<MvASSIGN NAME = "l.progress_prompt" VALUE = "">

	<MvEVAL EXPR = "{ '<SCRIPT LANGUAGE = "JavaScript">
<!--
parent.Info.Upgrade_Draw_Status( \'' $  l.action_prompt $ '\', \'' $ l.action_text $ '\', \'' $ l.record_prompt $ '\', \'' $ l.record_text $ '\', \'' $ l.progress_prompt $ '\', -1, -1 );
//-->
	</SCRIPT>' }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Status_Module" PARAMETERS = "module_name"  STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvLOCALIZED NAME = "l.action_prompt" ID = "MER-UPG-00028">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Action:</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Aktion:</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvLOCALIZED NAME = "l.action_text" ID = "MER-UPG-00029">
		<MvLOCALIZED-TOKEN NAME = "module_name" VALUE = "{ l.module_name }">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upgrading Module <B>%module_name%</B></MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Upgrade von Modul "<B>%module_name%</B>"</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvASSIGN NAME = "l.record_prompt" VALUE = "">
	<MvASSIGN NAME = "l.record_text" VALUE = "">
	<MvASSIGN NAME = "l.progress_prompt" VALUE = "">

	<MvEVAL EXPR = "{ '<SCRIPT LANGUAGE = "JavaScript">
<!--
parent.Info.Upgrade_Draw_Status( \'' $ l.action_prompt $ '\', \'' $ l.action_text $ '\', \'' $ l.record_prompt $ '\', \'' $ l.record_text $ '\', \'' $ l.progress_prompt $ '\', -1, -1 );
//-->
	</SCRIPT>' }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Draw_Status_Module_New" PARAMETERS = "module_name" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvLOCALIZED NAME = "l.action_prompt" ID = "MER-UPG-00030">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Action:</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Aktion:</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvLOCALIZED NAME = "l.action_text" ID = "MER-UPG-00031">
		<MvLOCALIZED-TOKEN NAME = "module_name" VALUE = "{ l.module_name }">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Installing Module <B>%module_name%</B></MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Installieren von Modul "<B>%module_name%</B>"</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvASSIGN NAME = "l.record_prompt" VALUE = "">
	<MvASSIGN NAME = "l.record_text" VALUE = "">
	<MvASSIGN NAME = "l.progress_prompt" VALUE = "">

	<MvEVAL EXPR = "{ '<SCRIPT LANGUAGE = "JavaScript">
<!--
parent.Info.Upgrade_Draw_Status( \'' $ l.action_prompt $ '\', \'' $ l.action_text $ '\', \'' $ l.record_prompt $ '\', \'' $ l.record_text $ '\', \'' $ l.progress_prompt $ '\', -1, -1 );
//-->
	</SCRIPT>' }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Log" PARAMETERS = "store, type, operation, filename, status, details" STANDARDOUTPUTLEVEL = "">
	<MvEXPORT FILE = "{ g.MerchantPath $ 'upgrade.log' }"
			  FIELDS = "s.dyn_time_t, g.Upgrade_Version_From, g.Merchant_Version, l.store, l.type, l.operation, l.filename, l.status, l.details"
			  DELIMITER = "|">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Log_Error" PARAMETERS = "store, operation, details" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "g.Upgrade_Errors_Detected" VALUE = 1>

	<MvASSIGN NAME = "l.type" VALUE = "*ERROR*">
	<MvASSIGN NAME = "l.filename" VALUE = "">
	<MvASSIGN NAME = "l.status" VALUE = "">

	<MvEXPORT FILE = "{ g.MerchantPath $ 'upgrade.log' }"
			  FIELDS = "s.dyn_time_t, g.Upgrade_Version_From, g.Merchant_Version, l.store, l.type, l.operation, l.filename, l.status, l.details"
			  DELIMITER = "|">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Init" STANDARDOUTPUTLEVEL = "" ERROROUTPUTLEVEL = "syntax, expression">
	<MvASSIGN NAME = "g.Upgrade_Errors_Detected"	VALUE = 0>

	<MvASSIGN NAME = "g.Domain_Misc_Pos"			VALUE = 1>
	<MvASSIGN NAME = "g.Domain_Misc_Count"			VALUE = 0>
	<MvASSIGN NAME = "g.Domain_DB_Pos"				VALUE = 1>
	<MvASSIGN NAME = "g.Domain_DB_Count"			VALUE = 0>
	<MvASSIGN NAME = "g.Domain_DB_Index_Pos"		VALUE = 1>
	<MvASSIGN NAME = "g.Domain_DB_Index_Count"		VALUE = 0>
	<MvASSIGN NAME = "g.Domain_Index_Count"			VALUE = 0>
	<MvASSIGN NAME = "g.Domain_Privilege_Pos"		VALUE = 1>
	<MvASSIGN NAME = "g.Domain_Privilege_Count"		VALUE = 0>
	<MvASSIGN NAME = "g.Domain_Module_New_Pos"		VALUE = 1>
	<MvASSIGN NAME = "g.Domain_Module_New_Count"	VALUE = 0>
	<MvASSIGN NAME = "g.Store_DB_Pos"				VALUE = 1>
	<MvASSIGN NAME = "g.Store_DB_Count"				VALUE = 0>
	<MvASSIGN NAME = "g.Store_DB_Index_Pos"			VALUE = 1>
	<MvASSIGN NAME = "g.Store_DB_Index_Count"		VALUE = 0>
	<MvASSIGN NAME = "g.Store_Index_Count"			VALUE = 0>
	<MvASSIGN NAME = "g.Store_Key_Pos"				VALUE = 1>
	<MvASSIGN NAME = "g.Store_Key_Count"			VALUE = 0>
	<MvASSIGN NAME = "g.Domain_Key_Pos"				VALUE = 1>
	<MvASSIGN NAME = "g.Domain_Key_Count"			VALUE = 0>
	<MvASSIGN NAME = "g.Domain_Module_Record"		VALUE = 0>
	<MvASSIGN NAME = "g.Store_Module_Record"		VALUE = 0>
	
	<MvASSIGN NAME = "g.Overall_Pos"				VALUE = 0>

	<MvASSIGN NAME = "g.Operation_Pos"		VALUE = 1>
				
	<MvASSIGN NAME = "g.Operation[1]"		VALUE = "domain_start_upgrade">
	<MvASSIGN NAME = "g.Operation[2]"		VALUE = "domain_misc">
	<MvASSIGN NAME = "g.Operation[3]"		VALUE = "domain_db">
	<MvASSIGN NAME = "g.Operation[4]"		VALUE = "domain_db_index">
	<MvASSIGN NAME = "g.Operation[5]"		VALUE = "store_db">
	<MvASSIGN NAME = "g.Operation[6]"		VALUE = "store_db_index">
	<MvASSIGN NAME = "g.Operation[7]"		VALUE = "domain_rename_db">
	<MvASSIGN NAME = "g.Operation[8]"		VALUE = "domain_rename_index">
	<MvASSIGN NAME = "g.Operation[9]"		VALUE = "domain_cleanup">
	<MvASSIGN NAME = "g.Operation[10]"		VALUE = "domain_key">
	
	<MvASSIGN NAME = "g.Operation[11]"		VALUE = "store_rename_db">
	<MvASSIGN NAME = "g.Operation[12]"		VALUE = "store_rename_index">
	<MvASSIGN NAME = "g.Operation[13]"		VALUE = "store_cleanup">
	<MvASSIGN NAME = "g.Operation[14]"		VALUE = "store_key">
	<MvASSIGN NAME = "g.Operation[15]"		VALUE = "domain_priv">
	<MvASSIGN NAME = "g.Operation[16]"		VALUE = "store_modules">
	<MvASSIGN NAME = "g.Operation[17]"		VALUE = "domain_modules">
	<MvASSIGN NAME = "g.Operation[18]"		VALUE = "domain_module_new">
	<MvASSIGN NAME = "g.Operation[19]"		VALUE = "domain_copy_scripts">
	<MvASSIGN NAME = "g.Operation_Count"	VALUE = 19>
	
	<MvOPEN NAME = "Upgrade_Stores" DATABASE = "{ g.MerchantPath $ 'stores.dbf' }">
	<MvIF EXPR = "{ MvOPEN_Error }">
		<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-UPG-00013', MvOPEN_Error ) }">
	<MvELSE>
		<MvASSIGN NAME = "g.Store_Record_Pos" VALUE = 1>
		
		<MvFILTER NAME = "Upgrade_Stores" FILTER = "{ NOT Upgrade_Stores.d.deleted }">
		<MvASSIGN NAME = "l.pos" VALUE = "0">
		<MvWHILE EXPR = "{ NOT Upgrade_Stores.d.EOF }">
			<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">

			<MvASSIGN NAME = "g.Store_Record" INDEX = "{ l.pos }" MEMBER = "ID" VALUE = "{ Upgrade_Stores.d.id }">
			<MvASSIGN NAME = "g.Store_Record" INDEX = "{ l.pos }" MEMBER = "Code" VALUE = "{ Upgrade_Stores.d.code }">
			<MvASSIGN NAME = "g.Store_Record" INDEX = "{ l.pos }" MEMBER = "Name" VALUE = "{ Upgrade_Stores.d.name }">
			<MvASSIGN NAME = "g.Store_Record" INDEX = "{ l.pos }" MEMBER = "Country" VALUE = "{ Upgrade_Stores.d.country }">
			
			<MvSKIP NAME = "Upgrade_Stores">
		</MvWHILE>

		<MvASSIGN NAME = "g.Store_Record_Count" VALUE = "{ l.pos }">
		<MvCLOSE NAME = "Upgrade_Stores">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Resume" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<FORM NAME = "Upgrade_Continue" METHOD = "post" ACTION = "{ g.sessionurl }">
	<INPUT TYPE = "hidden" NAME = "Upgrade_Have_State" VALUE = "Yes">
	<MvHIDE FIELDS = "g.Screen, g.Frame, g.Upgrade_Login, g.Upgrade_Password, g.Upgrade_Version_From, g.Upgrade_Errors_Detected, g.Overall_Pos, g.Skip">


	<MvCOMMENT>
	|
	| Domain Miscellaneous
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Domain_Misc_Pos, g.Domain_Misc_Count, g.Domain_Misc">

	<MvCOMMENT>
	|
	| Domain Databases
	| *********************************************************************************************
	|
	</MvCOMMENT>
	
	<MvHIDE FIELDS = "g.Domain_DB_Pos, g.Domain_DB_Count, g.Domain_DB">
	
	<MvCOMMENT>
	|
	| Domain Database Indices
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Domain_DB_Index_Pos, g.Domain_DB_Index_Count, g.Domain_DB_Index">

	<MvCOMMENT>
	|
	| Domain Module Installation List
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Domain_Module_New_Pos, g.Domain_Module_New_Count, Domain_Module_New">

	<MvCOMMENT>
	|
	| Domain Privileges
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Domain_Privilege_Pos, g.Domain_Privilege_Count, g.Domain_Privilege">

	<MvCOMMENT>
	|
	| Store Databases
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Store_DB_Pos, g.Store_DB_Count, g.Store_DB">

	<MvCOMMENT>
	|
	| Store Database Indices
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Store_DB_Index_Pos, g.Store_DB_Index_Count, g.Store_DB_Index">

	<MvCOMMENT>
	|
	| Store Keys
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Store_Key_Pos, g.Store_Key_Count, g.Store_Key">

	<MvCOMMENT>
	|
	| Domain Keys
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Domain_Key_Pos, g.Domain_Key_Count, g.Domain_Key">

	<MvCOMMENT>
	|
	| Store Records
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Store_Record_Pos, g.Store_Record_Count, g.Store_Record">

	<MvCOMMENT>
	|
	| Domain Modules
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Domain_Module_Record">

	<MvCOMMENT>
	|
	| Store Modules
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Store_Module_Record">

	<MvCOMMENT>
	|
	| Operations
	| *********************************************************************************************
	|
	</MvCOMMENT>

	<MvHIDE FIELDS = "g.Operation, g.Operation_Pos, g.Operation_Count">

	</FORM>

	<SCRIPT LANGUAGE = "JavaScript">
<!--
function Upgrade_Resume()
{
	document.Upgrade_Continue.submit();
}
//-->
	</SCRIPT>
</MvFUNCTION>

<MvFUNCTION NAME = "Domain_DB_New_Insert" PARAMETERS = "version, db_name, fields" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.version GT g.Upgrade_Version_From }">
		<MvASSIGN NAME = "l.pos" VALUE = 1>
		
		<MvWHILE EXPR = "{ l.pos LE g.Domain_DB_Count }">
			<MvIF EXPR = "{ g.Domain_DB[ l.pos ]:Filename EQ l.db_name }">
				<MvIF EXPR = "{ g.Domain_DB[ l.pos ]:Operation EQ 'change' }">
					<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ l.pos }" MEMBER = "Operation" VALUE = "new">
				</MvIF>

				<MvIF EXPR = "{ g.Domain_DB[ l.pos ]:Version LT l.version }">
					<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ l.pos }" MEMBER = "Fields" VALUE = "{ l.fields }">
					<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ l.pos }" MEMBER = "Version" VALUE = "{ l.version }">
				</MvIF>

				<MvFUNCTIONRETURN>
			</MvIF>

			<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
		</MvWHILE>

		<MvASSIGN NAME = "g.Domain_DB_Count" VALUE = "{ g.Domain_DB_Count + 1 }">
		<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ g.Domain_DB_Count }" MEMBER = "Operation"	VALUE = "new">
		<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ g.Domain_DB_Count }" MEMBER = "Version"	VALUE = "{ l.version }">
		<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ g.Domain_DB_Count }" MEMBER = "Filename"	VALUE = "{ l.db_name }">
		<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ g.Domain_DB_Count }" MEMBER = "Fields"	VALUE = "{ l.fields }">
		<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ g.Domain_DB_Count }" MEMBER = "Record"	VALUE = 0>
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Domain_DB_Change_Insert" PARAMETERS = "version, db_name, fields" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.version GT g.Upgrade_Version_From }">
		<MvASSIGN NAME = "l.pos" VALUE = 1>
		
		<MvWHILE EXPR = "{ l.pos LE g.Domain_DB_Count }">
			<MvIF EXPR = "{ g.Domain_DB[ l.pos ]:Filename EQ l.db_name }">
				<MvIF EXPR = "{ g.Domain_DB:[ l.pos ]:Version LT l.version }">
					<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ l.pos }" MEMBER = "Fields" VALUE = "{ l.fields }">
					<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ l.pos }" MEMBER = "Version" VALUE = "{ l.version }">
				</MvIF>

				<MvFUNCTIONRETURN>
			</MvIF>

			<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
		</MvWHILE>

		<MvASSIGN NAME = "g.Domain_DB_Count" VALUE = "{ g.Domain_DB_Count + 1 }">
		<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ g.Domain_DB_Count }" MEMBER = "Operation"	VALUE = "change">
		<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ g.Domain_DB_Count }" MEMBER = "Version"	VALUE = "{ l.version }">
		<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ g.Domain_DB_Count }" MEMBER = "Filename"	VALUE = "{ l.db_name }">
		<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ g.Domain_DB_Count }" MEMBER = "Fields"	VALUE = "{ l.fields }">
		<MvASSIGN NAME = "g.Domain_DB" INDEX = "{ g.Domain_DB_Count }" MEMBER = "Record"	VALUE = 0>
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Domain_DB_Index_Insert" PARAMETERS = "version, db_alias, db_name, index_name, expression, flags" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.pos" VALUE = 1>
	<MvWHILE EXPR = "{ l.pos LE g.Domain_DB_Count }">
		<MvIF EXPR = "{ g.Domain_DB[ l.pos ]:Filename EQ l.db_name }">
			<MvASSIGN NAME = "l.type" VALUE = "temporary">
			<MvWHILESTOP>
		</MvIF>

		<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
	</MvWHILE>

	<MvIF EXPR = "{ l.pos GT g.Domain_DB_Count }">
		<MvIF EXPR = "{ l.version GT g.Upgrade_Version_From }">
			<MvASSIGN NAME = "l.type" VALUE = "original">
		<MvELSE>
			<MvFUNCTIONRETURN>
		</MvIF>
	</MvIF>

	<MvASSIGN NAME = "l.pos" VALUE = 1>
	<MvWHILE EXPR = "{ l.pos LE g.Domain_DB_Index_Count }">
		<MvIF EXPR = "{ ( g.Domain_DB_Index[ l.pos ]:Index EQ l.index_name ) AND
						( g.Domain_DB_Index[ l.pos ]:Version LT l.version ) }">
			<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ l.pos }" MEMBER = "Version"		VALUE = "{ l.version }">
			<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ l.pos }" MEMBER = "DB_Alias"	VALUE = "{ l.db_alias }">
			<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ l.pos }" MEMBER = "DB_Filename" VALUE = "{ l.db_name }">
			<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ l.pos }" MEMBER = "Expression"	VALUE = "{ l.expression }">
			<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ l.pos }" MEMBER = "Flags"		VALUE = "{ l.flags }">

			<MvFUNCTIONRETURN>
		</MvIF>

		<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
	</MvWHILE>

	<MvASSIGN NAME = "g.Domain_DB_Index_Count" VALUE = "{ g.Domain_DB_Index_Count + 1 }">
	<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ g.Domain_DB_Index_Count }" MEMBER = "Type"			VALUE = "{ l.type }">
	<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ g.Domain_DB_Index_Count }" MEMBER = "Version"		VALUE = "{ l.version }">
	<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ g.Domain_DB_Index_Count }" MEMBER = "DB_Alias"		VALUE = "{ l.db_alias }">
	<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ g.Domain_DB_Index_Count }" MEMBER = "DB_Filename"	VALUE = "{ l.db_name }">
	<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ g.Domain_DB_Index_Count }" MEMBER = "Index"			VALUE = "{ l.index_name }">
	<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ g.Domain_DB_Index_Count }" MEMBER = "Expression"	VALUE = "{ l.expression }">
	<MvASSIGN NAME = "g.Domain_DB_Index" INDEX = "{ g.Domain_DB_Index_Count }" MEMBER = "Flags"			VALUE = "{ l.flags }">
</MvFUNCTION>

<MvFUNCTION NAME = "Store_DB_New_Insert" PARAMETERS = "version, db_name, fields" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.version GT g.Upgrade_Version_From }">
		<MvASSIGN NAME = "l.pos" VALUE = 1>
		
		<MvWHILE EXPR = "{ l.pos LE g.Store_DB_Count }">
			<MvIF EXPR = "{ g.Store_DB[ l.pos ]:Filename EQ l.db_name }">
				<MvIF EXPR = "{ g.Store_DB[ l.pos ]:Operation EQ 'change' }">
					<MvASSIGN NAME = "g.Store_DB" INDEX = "{ l.pos }" MEMBER = "Operation" VALUE = "new">
				</MvIF>

				<MvIF EXPR = "{ g.Store_DB[ l.pos ]:Version LT l.version }">
					<MvASSIGN NAME = "g.Store_DB" INDEX = "{ l.pos }" MEMBER = "Fields" VALUE = "{ l.fields }">
				</MvIF>

				<MvFUNCTIONRETURN>
			</MvIF>

			<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
		</MvWHILE>

		<MvASSIGN NAME = "g.Store_DB_Count" VALUE = "{ g.Store_DB_Count + 1 }">
		<MvASSIGN NAME = "g.Store_DB" INDEX = "{ g.Store_DB_Count }" MEMBER = "Operation"	VALUE = "new">
		<MvASSIGN NAME = "g.Store_DB" INDEX = "{ g.Store_DB_Count }" MEMBER = "Version"		VALUE = "{ l.version }">
		<MvASSIGN NAME = "g.Store_DB" INDEX = "{ g.Store_DB_Count }" MEMBER = "Filename"	VALUE = "{ l.db_name }">
		<MvASSIGN NAME = "g.Store_DB" INDEX = "{ g.Store_DB_Count }" MEMBER = "Fields"		VALUE = "{ l.fields }">
		<MvASSIGN NAME = "g.Store_DB" INDEX = "{ g.Store_DB_Count }" MEMBER = "Record"		VALUE = 0>
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Store_DB_Change_Insert" PARAMETERS = "version, db_name, fields" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.version GT g.Upgrade_Version_From }">
		<MvASSIGN NAME = "l.pos" VALUE = 1>
		
		<MvWHILE EXPR = "{ l.pos LE g.Store_DB_Count }">
			<MvIF EXPR = "{ g.Store_DB[ l.pos ]:Filename EQ l.db_name }">
				<MvIF EXPR = "{ g.Store_DB[ l.pos ]:Version LT l.version }">
					<MvASSIGN NAME = "g.Store_DB" INDEX = "{ l.pos }" MEMBER = "Fields" VALUE = "{ l.fields }">
				</MvIF>

				<MvFUNCTIONRETURN>
			</MvIF>

			<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
		</MvWHILE>

		<MvASSIGN NAME = "g.Store_DB_Count" VALUE = "{ g.Store_DB_Count + 1 }">
		<MvASSIGN NAME = "g.Store_DB" INDEX = "{ g.Store_DB_Count }" MEMBER = "Operation"	VALUE = "change">
		<MvASSIGN NAME = "g.Store_DB" INDEX = "{ g.Store_DB_Count }" MEMBER = "Version"		VALUE = "{ l.version }">
		<MvASSIGN NAME = "g.Store_DB" INDEX = "{ g.Store_DB_Count }" MEMBER = "Filename"	VALUE = "{ l.db_name }">
		<MvASSIGN NAME = "g.Store_DB" INDEX = "{ g.Store_DB_Count }" MEMBER = "Fields"		VALUE = "{ l.fields }">
		<MvASSIGN NAME = "g.Store_DB" INDEX = "{ g.Store_DB_Count }" MEMBER = "Record"		VALUE = 0>
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Store_DB_Index_Insert" PARAMETERS = "version, db_alias, db_name, index_name, expression, flags" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.pos" VALUE = 1>
	
	<MvWHILE EXPR = "{ l.pos LE g.Store_DB_Count }">
		<MvIF EXPR = "{ g.Store_DB[ l.pos ]:Filename EQ l.db_name }">
			<MvASSIGN NAME = "l.type" VALUE = "temporary">
			<MvWHILESTOP>
		</MvIF>

		<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
	</MvWHILE>

	<MvIF EXPR = "{ l.pos GT g.Store_DB_Count }">
		<MvIF EXPR = "{ l.version GT g.Upgrade_Version_From }">
			<MvASSIGN NAME = "l.type" VALUE = "original">
		<MvELSE>
			<MvFUNCTIONRETURN>
		</MvIF>
	</MvIF>

	<MvASSIGN NAME = "l.pos" VALUE = 1>
	<MvWHILE EXPR = "{ l.pos LE g.Store_DB_Index_Count }">
		<MvIF EXPR = "{ ( g.Store_DB_Index[ l.pos ]:Index EQ l.index_name ) AND
						( g.Store_DB_Index[ l.pos ]:Version LT l.version ) }">
			<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ l.pos }" MEMBER = "Version"		VALUE = "{ l.version }">
			<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ l.pos }" MEMBER = "DB_Alias"		VALUE = "{ l.db_alias }">
			<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ l.pos }" MEMBER = "DB_Filename"	VALUE = "{ l.db_name }">
			<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ l.pos }" MEMBER = "Expression"	VALUE = "{ l.expression }">
			<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ l.pos }" MEMBER = "Flags"		VALUE = "{ l.flags }">

			<MvFUNCTIONRETURN>
		</MvIF>

		<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
	</MvWHILE>

	<MvASSIGN NAME = "g.Store_DB_Index_Count" VALUE = "{ g.Store_DB_Index_Count + 1 }">
	<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ g.Store_DB_Index_Count }" MEMBER = "Type"		VALUE = "{ l.type }">
	<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ g.Store_DB_Index_Count }" MEMBER = "Version"		VALUE = "{ l.version }">
	<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ g.Store_DB_Index_Count }" MEMBER = "DB_Alias"	VALUE = "{ l.db_alias }">
	<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ g.Store_DB_Index_Count }" MEMBER = "DB_Filename"	VALUE = "{ l.db_name }">
	<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ g.Store_DB_Index_Count }" MEMBER = "Index"		VALUE = "{ l.index_name }">
	<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ g.Store_DB_Index_Count }" MEMBER = "Expression"	VALUE = "{ l.expression }">
	<MvASSIGN NAME = "g.Store_DB_Index" INDEX = "{ g.Store_DB_Index_Count }" MEMBER = "Flags"		VALUE = "{ l.flags }">
</MvFUNCTION>

<MvFUNCTION NAME = "Domain_Module_New_Build_List" PARAMETERS = "filename" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvOPEN NAME = "Upgrade_Modules" DATABASE = "{ g.MerchantPath $ 'modules.dbf' }" INDEXES = "{ g.MerchantPath $ 'mod_code.mvx' }">
	<MvIF EXPR = "{ MvOPEN_Error }">
		<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Domain_Module_New_Build_List', MvOPEN_Error ) }">
	<MvELSE>
		<MvFILTER NAME = "Upgrade_Modules" FILTER = "{ NOT Upgrade_Modules.d.deleted }">

		<MvIF EXPR = "{ sfcopy( g.Version_Path $ l.filename, l.filename ) }">
			<MvIMPORT FILE = "{ l.filename }"
					  FIELDS = "l.type, l.module, l.language"
					  DELIMITER = "|"
					  FILTER = "{ toupper( l.type ) EQ 'MERCHANT' }">
				<MvASSIGN NAME = "l.module" VALUE = "{ ltrim( rtrim( l.module ) ) }">
				<MvASSIGN NAME = "l.language" VALUE = "{ ltrim( rtrim( l.language ) ) }">

				<MvIF EXPR = "{ ( len( l.language ) EQ 0 ) OR
								( s.miva_language CIN l.language ) }">
					<MvDO FILE = "{ g.Version_Path $ l.module }" NAME = "l.code" VALUE = "{ Module_Code() }">

					<MvFIND NAME = "Upgrade_Modules" VALUE = "{ l.code }" EXACT>
					<MvIF EXPR = "{ Upgrade_Modules.d.EOF }">
						<MvASSIGN NAME = "g.Domain_Module_New_Count" VALUE = "{ g.Domain_Module_New_Count + 1 }">
						<MvASSIGN NAME = "g.Domain_Module_New" INDEX = "{ g.Domain_Module_New_Count }" MEMBER = "Module" VALUE = "{ l.module }">
					</MvIF>
				</MvIF>
			</MvIMPORT>

			<MvIF EXPR = "{ NOT fdelete( l.filename ) }">
				<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Domain_Module_New_Build_List', 'Unable to delete \'' $ l.filename $ '\'' ) }">
			</MvIF>
		</MvIF>

		<MvCLOSE NAME = "Upgrade_Modules">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Domain_Misc_Insert" PARAMETERS = "version, mnemonic" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.version GT g.Upgrade_Version_From }">
		<MvASSIGN NAME = "l.pos" VALUE = 1>
		
		<MvWHILE EXPR = "{ l.pos LE g.Domain_Misc_Count }">
			<MvIF EXPR = "{ g.Domain_Misc[ l.pos ]:Mnemonic EQ l.mnemonic }">
				<MvFUNCTIONRETURN>
			</MvIF>

			<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
		</MvWHILE>

		<MvASSIGN NAME = "g.Domain_Misc_Count" VALUE = "{ g.Domain_Misc_Count + 1 }">
		<MvASSIGN NAME = "g.Domain_Misc" INDEX = "{ g.Domain_Misc_Count }" MEMBER = "Mnemonic" VALUE = "{ l.mnemonic }">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Store_Key_New_Insert" PARAMETERS = "version, type, start" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.version GT g.Upgrade_Version_From }">
		<MvASSIGN NAME = "l.pos" VALUE = 1>

		<MvWHILE EXPR = "{ l.pos LE g.Store_Key_Count }">
			<MvIF EXPR = "{ g.Store_Key[ l.pos ]:Type EQ l.type }">
				<MvFUNCTIONRETURN>
			</MvIF>

			<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
		</MvWHILE>

		<MvASSIGN NAME = "g.Store_Key_Count" VALUE = "{ g.Store_Key_Count + 1 }">
		<MvASSIGN NAME = "g.Store_Key" INDEX = "{ g.Store_Key_Count }" MEMBER = "Type"	VALUE = "{ l.type }">
		<MvASSIGN NAME = "g.Store_Key" INDEX = "{ g.Store_Key_Count }" MEMBER = "Start"	VALUE = "{ l.start }">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Domain_Key_New_Insert" PARAMETERS = "version, type, start" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.version GT g.Upgrade_Version_From }">
		<MvASSIGN NAME = "l.pos" VALUE = 1>

		<MvWHILE EXPR = "{ l.pos LE g.Domain_Key_Count }">
			<MvIF EXPR = "{ g.Domain_Key[ l.pos ]:Type EQ l.type }">
				<MvFUNCTIONRETURN>
			</MvIF>

			<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
		</MvWHILE>

		<MvASSIGN NAME = "g.Domain_Key_Count" VALUE = "{ g.Domain_Key_Count + 1 }">
		<MvASSIGN NAME = "g.Domain_Key" INDEX = "{ g.Domain_Key_Count }" MEMBER = "Type"	VALUE = "{ l.type }">
		<MvASSIGN NAME = "g.Domain_Key" INDEX = "{ g.Domain_Key_Count }" MEMBER = "Start"	VALUE = "{ l.start }">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Domain_Privilege_New_Insert" PARAMETERS = "version, privilege" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.version GT g.Upgrade_Version_From }">
		<MvASSIGN NAME = "l.pos" VALUE = 1>
		
		<MvWHILE EXPR = "{ l.pos LE g.Domain_Privilege_Count }">
			<MvIF EXPR = "{ g.Domain_Privilege[ l.pos ]:Privilege EQ l.privilege }">
				<MvFUNCTIONRETURN>
			</MvIF>

			<MvASSIGN NAME = "l.pos" VALUE = "{ l.pos + 1 }">
		</MvWHILE>

		<MvASSIGN NAME = "g.Domain_Privilege_Count"	VALUE = "{ g.Domain_Privilege_Count + 1 }">
		<MvASSIGN NAME = "g.Domain_Privilege" INDEX = "{ g.Domain_Privilege_Count }" MEMBER = "Privilege" VALUE = "{ l.privilege }">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Misc" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Domain_Misc_Pos ) }">

	<MvIF EXPR = "{ l.pos LE g.Domain_Misc_Count }">
		<MvASSIGN NAME = "l.mnemonic" VALUE = "{ g.Domain_Misc[ l.pos ]:Mnemonic }">

		<MvEVAL EXPR = "{ Upgrade_Clear_Status() }">

		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'misc', 'start', l.mnemonic, '', '' ) }">
		<MvIF EXPR = "{ NOT Upgrade_Domain_Misc_Perform( l.mnemonic ) }">
			<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Misc', l.mnemonic ) }">
		</MvIF>

		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'misc', 'finished', l.mnemonic, '', '' ) }">

		<MvASSIGN NAME = "g.Domain_Misc_Pos" VALUE = "{ g.Domain_Misc_Pos + 1 }">
		<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_DB" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.ok" VALUE = 1>
	
	<MvIF EXPR = "{ NOT fmkdir( g.MerchantPath $ 'upgrade/' ) }">
		<!--<MvFUNCTIONRETURN VALUE = 0>-->
	</MvIF>

	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Domain_DB_Pos ) }">
	<MvIF EXPR = "{ l.pos LE g.Domain_DB_Count }">
		<MvASSIGN NAME = "l.db_finished" VALUE = 0>

		<MvASSIGN NAME = "l.operation" VALUE = "{ g.Domain_DB[ l.pos ]:Operation }">
		<MvASSIGN NAME = "l.filename" VALUE = "{ g.Domain_DB[ l.pos ]:Filename }">
		<MvASSIGN NAME = "l.fields" VALUE = "{ g.Domain_DB[ l.pos ]:Fields }">
		<MvASSIGN NAME = "l.record" VALUE = "{ g.Domain_DB[ l.pos ]:Record }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_DB( l.operation, l.filename, -1, 0 ) }">

		<MvIF EXPR = "{ l.record NE 0 }">
			<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'DB', l.operation, l.filename, 'resuming', l.record ) }">
		<MvELSE>
			<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'DB', l.operation, l.filename, 'started', '' ) }">
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'new' }">
			<MvCREATE NAME = "Temporary"
					  DATABASE = "{ g.MerchantPath $ 'upgrade/' $ l.filename }"
					  FIELDS = "{ l.fields }">
			<MvIF EXPR = "{ MvCREATE_Error }">
				<MvASSIGN NAME = "l.ok" VALUE = 0>
				<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_DB', MvCREATE_Error ) }">
			<MvELSE>
				<MvIF EXPR = "{ NOT Upgrade_Domain_DB_New( l.filename ) }">
					<MvCOMMENT> Handled by lower level </MvCOMMENT>
				</MvIF>

				<MvCLOSE NAME = "Temporary">
			</MvIF>

			<MvEVAL EXPR = "{ Upgrade_Draw_Status_DB( l.operation, l.filename, -1, 0 ) }">
			<MvASSIGN NAME = "l.db_finished" VALUE = 1>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'change' }">
			<MvOPEN NAME = "Original"
					DATABASE = "{ g.MerchantPath $ l.filename }">
			<MvIF EXPR = "{ MvOPEN_Error }">
				<MvASSIGN NAME = "l.ok" VALUE = 0>
				<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_DB', MvOPEN_Error ) }">
			<MvELSE>
				<MvFILTER NAME = "Original" FILTER = "{ NOT Original.d.deleted }">
				<MvASSIGN NAME = "l.temp_opened" VALUE = 0>

				<MvIF EXPR = "{ l.record EQ 0 }">
					<MvCREATE NAME = "Temporary"
							  DATABASE = "{ g.MerchantPath $ 'upgrade/' $ l.filename }"
							  FIELDS = "{ l.fields }">
					<MvIF EXPR = "{ MvCREATE_Error }">
						<MvASSIGN NAME = "l.ok" VALUE = 0>
						<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_DB', MvCREATE_Error ) }">
					<MvELSE>
						<MvASSIGN NAME = "l.temp_opened" VALUE = 1>
					</MvIF>
				<MvELSE>
					<MvOPEN NAME = "Temporary"
							DATABASE = "{ g.MerchantPath $ 'upgrade/' $ l.filename }">
					<MvIF EXPR = "{ MvOPEN_Error }">
						<MvASSIGN NAME = "l.ok" VALUE = 0>
						<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_DB', MvOPEN_Error ) }">
					<MvELSE>
						<MvASSIGN NAME = "l.temp_opened" VALUE = 1>
					</MvIF>
				</MvIF>

				<MvIF EXPR = "{ l.temp_opened }">
					<MvGO NAME = "Original" ROW = "top">
					<MvIF EXPR = "{ l.record }">
						<MvSKIP NAME = "Original" ROWS = "{ l.record }">
					</MvIF>

					<MvEVAL EXPR = "{ Upgrade_Draw_Status_DB( l.operation, l.filename, Original.d.recno, Original.d.totrec ) }">

					<MvASSIGN NAME = "l.records" VALUE = 0>
					<MvWHILE EXPR = "{ ( NOT Original.d.EOF ) AND ( l.records LT 100 ) }">
						<MvASSIGN NAME = "l.records" VALUE = "{ l.records + 1 }">
											
						<MvIF EXPR = "{ NOT Upgrade_Domain_DB_Change_ProcessRecord( l.filename ) }">
							<MvCOMMENT> Handled by lower level </MvCOMMENT>
						</MvIF>

						<MvSKIP NAME = "Original" ROWS = 1>
					</MvWHILE>

					<MvIF EXPR = "{ Original.d.EOF }">
						<MvEVAL EXPR = "{ Upgrade_Draw_Status_DB( l.operation, l.filename, Original.d.totrec, Original.d.totrec ) }">
						<MvASSIGN NAME = "l.db_finished" VALUE = 1>
					<MvELSE>
						<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'DB', l.operation, l.filename, 'resume', l.record + l.records ) }">
						<MvASSIGN NAME = "g.Domain_DB[ l.pos ]:Record" VALUE = "{ l.record + l.records }">
					</MvIF>

					<MvCLOSE NAME = "Temporary">
				</MvIF>

				<MvCLOSE NAME = "Original">
			</MvIF>
		</MvIF>

		<MvIF EXPR = "{ l.db_finished OR ( NOT l.ok ) }">
			<MvIF EXPR = "{ l.ok }">
				<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'DB', l.operation, l.filename, 'completed', '' ) }">
			</MvIF>
			
			<MvASSIGN NAME = "g.Store_DB" INDEX = "{ l.pos }" MEMBER = "Record" VALUE = 0>
			<MvASSIGN NAME = "g.Domain_DB_Pos" VALUE = "{ g.Domain_DB_Pos + 1 }">
			<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
		</MvIF>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_DB_Index" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ NOT fmkdir( g.MerchantPath $ 'upgrade/' ) }">
		<!--<MvFUNCTIONRETURN VALUE = 0>-->
	</MvIF>

	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Domain_DB_Index_Pos ) }">
	<MvIF EXPR = "{ l.pos LE g.Domain_DB_Index_Count }">
		<MvASSIGN NAME = "l.type"		VALUE = "{ g.Domain_DB_Index[ l.pos ]:Type }">
		<MvASSIGN NAME = "l.db_alias"	VALUE = "{ g.Domain_DB_Index[ l.pos ]:DB_Alias }">
		<MvASSIGN NAME = "l.db_name"	VALUE = "{ g.Domain_DB_Index[ l.pos ]:DB_Filename }">
		<MvASSIGN NAME = "l.index_name"	VALUE = "{ g.Domain_DB_Index[ l.pos ]:Index }">
		<MvASSIGN NAME = "l.expression"	VALUE = "{ g.Domain_DB_Index[ l.pos ]:Expression }">
		<MvASSIGN NAME = "l.flags"		VALUE = "{ g.Domain_DB_Index[ l.pos ]:Flags }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_Index( 'index', l.db_name, l.index_name ) }">
		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'Index', 'index', l.index_name, 'started', '' ) }">

		<MvIF EXPR = "{ l.type EQ 'original' }">
			<MvOPEN NAME = "{ l.db_alias }"
					DATABASE = "{ g.MerchantPath $ l.db_name }">
		</MvIF>

		<MvIF EXPR = "{ l.type EQ 'temporary' }">
			<MvOPEN NAME = "{ l.db_alias }"
					DATABASE = "{ g.MerchantPath $ 'upgrade/' $ l.db_name }">
		</MvIF>

		<MvIF EXPR = "{ MvOPEN_Error }">
			<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_DB_Index', MvOPEN_Error ) }">
		<MvELSE>
			<MvMAKEINDEX NAME = "{ l.db_alias }"
						 INDEXFILE = "{ g.MerchantPath $ 'upgrade/' $ l.index_name }"
						 EXPRESSION = "l.expression"
						 FLAGS = "{ l.flags }" EXPRESSION_TYPE = "variable">
			<MvIF EXPR = "{ MvMAKEINDEX_Error }">
				<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_DB_Index', MvMAKEINDEX_Error ) }">
			</MvIF>

			<MvCLOSE NAME = "{ l.db_alias }">
		</MvIF>

		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'Index', 'index', l.index_name, 'completed', '' ) }">
		<MvASSIGN NAME = "g.Domain_DB_Index_Pos" VALUE = "{ g.Domain_DB_Index_Pos + 1 }">
		<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Rename_DB" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Domain_DB_Pos ) }">
	
	
	
	<MvIF EXPR = "{ l.pos LE g.Domain_DB_Count }">
		<MvASSIGN NAME = "l.operation" VALUE = "{ g.Domain_DB[ l.pos ]:Operation }">
		<MvASSIGN NAME = "l.filename" VALUE = "{ g.Domain_DB[ l.pos ]:Filename }">
		<MvASSIGN NAME = "l.fields" VALUE = "{ g.Domain_DB[ l.pos ]:Fields }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_Rename( l.filename ) }">

		<MvIF EXPR = "{ l.operation EQ 'change' }">		
			<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'DB', 'rename', l.filename, 'rename original', g.MerchanPath $ l.filename ) }">
			<MvIF EXPR = "{ NOT frename( g.MerchantPath $ l.filename, g.MerchantPath $ l.filename $ '.orig' ) }">
				<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Rename_DB', 'Unable to rename \'' $ g.MerchantPath $ l.filename $ '\' to \'' $ g.MerchantPath $ l.filename $ '.orig\'' ) }">
			</MvIF>
		</MvIF>

		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'DB', 'rename', l.filename, 'rename temporary', g.MerchantPath $ 'upgrade/' $ l.filename ) }">
		<MvIF EXPR = "{ NOT frename( g.MerchantPath $ 'upgrade/' $ l.filename, g.MerchantPath $ l.filename ) }">
			<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Rename_DB', 'Unable to rename \'' $ g.MerchantPath $ 'upgrade/' $ l.filename $ '\' to \'' $ g.MerchantPath $ l.filename $ '\'' ) }">
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'change' }">		
			<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'DB', 'rename', l.filename, 'delete original', g.MerchantPath $ l.filename $ '.orig' ) }">
			<MvIF EXPR = "{ NOT fdelete( g.MerchantPath $ l.filename $ '.orig' ) }">
				<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Rename_DB', 'Unable to delete \'' $ g.MerchantPath $ l.memo_filename $ '.orig\'' ) }">
			</MvIF>
		</MvIF>

		<MvIF EXPR = "{ 'MEMO' IN l.fields }">
			<MvASSIGN NAME = "l.memo_filename" VALUE = "{ substring( l.filename, 1, '.' IN l.filename ) $ 'dbt' }">
			<MvASSIGN NAME = "l.old_memo_exists" VALUE = "{ fexists( g.MerchantPath $ l.memo_filename ) }">

			<MvIF EXPR = "{ ( l.operation EQ 'change' ) AND l.old_memo_exists }">
				<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'DB', 'rename', l.filename, 'rename original memo', g.MerchantPath $ l.memo_filename ) }">
				<MvIF EXPR = "{ NOT frename( g.MerchantPath $ l.memo_filename, g.MerchantPath $ l.memo_filename $ '.orig' ) }">
					<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Rename_DB', 'Unable to rename \'' $ g.MerchantPath $ l.memo_filename $ '\' to \'' $ g.MerchantPath $ l.memo_filename $ '.orig\'' ) }">
				</MvIF>
			</MvIF>

			<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'DB', 'rename', l.filename, 'rename temporary', g.MerchantPath $ 'upgrade/' $ l.memo_filename ) }">
			<MvIF EXPR = "{ NOT frename( g.MerchantPath $ 'upgrade/' $ l.memo_filename, g.MerchantPath $ l.memo_filename ) }">
				<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Rename_DB', 'Unable to rename \'' $ g.MerchantPath $ 'upgrade/' $ l.memo_filename $ '\' to \'' $ g.MerchantPath $ l.memo_filename $ '\'' ) }">
			</MvIF>

			<MvIF EXPR = "{ ( l.operation EQ 'change' ) AND l.old_memo_exists }">
				<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'DB', 'rename', l.filename, 'delete original', g.MerchantPath $ l.memo_filename $ '.orig' ) }">
				<MvIF EXPR = "{ NOT fdelete( g.MerchantPath $ l.memo_filename $ '.orig' ) }">
					<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Rename_DB', 'Unable to delete \'' $ g.MerchantPath $ l.memo_filename $ '.orig\'' ) }">
				</MvIF>
			</MvIF>
		</MvIF>

		<MvASSIGN NAME = "g.Domain_DB_Pos" VALUE = "{ g.Domain_DB_Pos + 1 }">
		<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Rename_DB_Index" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Domain_DB_Index_Pos ) }">
	<MvIF EXPR = "{ l.pos LE g.Domain_DB_Index_Count }">
		<MvASSIGN NAME = "l.filename" VALUE = "{ g.Domain_DB_Index[ l.pos ]:Index }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_Rename( l.filename ) }">

		<MvIF EXPR = "{ fexists( g.MerchantPath $ l.filename ) }">
			<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'Index', 'rename', l.filename, 'delete original', g.MerchanPath $ l.filename ) }">
			<MvIF EXPR = "{ NOT fdelete( g.MerchantPath $ l.filename ) }">
				<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Rename_DB_Index', 'Unable to delete \'' $ g.MerchantPath $ l.filename $ '\'' ) }">
			</MvIF>
		</MvIF>

		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'Index', 'rename', l.filename, 'rename temporary', g.MerchantPath $ 'upgrade/' $ l.filename ) }">
		<MvIF EXPR = "{ NOT frename( g.MerchantPath $ 'upgrade/' $ l.filename, g.MerchantPath $ l.filename ) }">
			<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Rename_DB_Index', 'Unable to rename \'' $ g.MerchantPath $ 'upgrade/' $ l.filename $ '\' to \'' $ g.MerchantPath $ l.filename $ '\'' ) }">
		</MvIF>

		<MvASSIGN NAME = "g.Domain_DB_Index_Pos" VALUE = "{ g.Domain_DB_Index_Pos + 1 }">
		<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Cleanup" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvEVAL EXPR = "{ Upgrade_Clear_Status() }">

	<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', '', 'cleanup', g.MerchantPath $ 'upgrade/', 'delete directory', '' ) }">
	<MvIF EXPR = "{ NOT fdelete( g.MerchantPath $ 'upgrade/' ) }">
		<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Cleanup', 'Unable to delete \'' $ g.MerchantPath $ 'upgrade/' $ '\'' ) }">
	</MvIF>

	<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', '', 'cleanup', 'domain.dbf', 'update version', '' ) }">
	<MvOPEN NAME = "Upgrade_Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
	<MvASSIGN NAME = "Upgrade_Domain.d.version" VALUE = "{ g.Merchant_Version }">
	<MvUPDATE NAME = "Upgrade_Domain">
	<MvCLOSE NAME = "Upgrade_Domain">
	
	<MvASSIGN NAME = "l.foo" VALUE = "{ Upgrade_Deactivate_Skipped_Modules() }">

	<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Privilege" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Domain_Privilege_Pos ) }">

	<MvIF EXPR = "{ l.pos LE g.Domain_Privilege_Count }">
		<MvASSIGN NAME = "l.privilege" VALUE = "{ g.Domain_Privilege[ l.pos ]:Privilege }">
		<MvASSIGN NAME = "l.name" VALUE = "{ Upgrade_Domain_Privilege_Name( l.privilege ) }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_Privilege( l.privilege, l.name ) }">

		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'privs', 'insert', l.privilege, 'starting', l.name ) }">
		<MvOPEN NAME = "Privileges"
				DATABASE = "{ g.MerchantPath $ 'privs.dbf' }"
				INDEXES = "{ g.MerchantPath $ 'prv_priv.mvx, ' $ g.MerchantPath $ 'prv_name.mvx' }">
		<MvIF EXPR = "{ MvOPEN_Error }">
			<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Privilege', MvOPEN_Error ) }">
		<MvELSE>
			<MvASSIGN NAME = "Privileges.d.privilege"	VALUE = "{ l.privilege }">
			<MvASSIGN NAME = "Privileges.d.name"		VALUE = "{ Upgrade_Domain_Privilege_Name( l.privilege ) }">
			<MvADD NAME = "Privileges">

			<MvCLOSE NAME = "Privileges">
		</MvIF>

		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'privs', 'insert', l.privilege, 'finished', l.name ) }">

		<MvASSIGN NAME = "g.Domain_Privilege_Pos" VALUE = "{ g.Domain_Privilege_Pos + 1 }">
		<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	</MvIF>
	<MvFUNCTIONRETURN VALUE = "1">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Module" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvEVAL EXPR = "{ Upgrade_Draw_Status_Module( Modules.d.name ) }">
	<MvIF EXPR = "{ Modules.d.Active }">

		<MvDO FILE = "{ g.Module_Root $ Modules.d.module }" NAME = "l.version" VALUE = "{ Module_Version() }">
		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'upgrade_modules', 'start', Modules.d.module, 'check version', l.version $ ' ' $ Modules.d.version ) }">
		<MvIF EXPR = "{ l.version NE Modules.d.version }">
			<MvDO FILE = "{ g.Module_Root $ Modules.d.module }" NAME = "l.ok" VALUE = "{ Module_Upgrade( Modules.d.version ) }">
			<MvIF EXPR = "{ l.ok }">
				<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'upgrade_modules', 'update', Modules.d.module, '', '' ) }">
				<MvDO FILE = "{ g.Upgrade_Library_DB }" NAME = "l.ok" VALUE = "{ Module_Update( Modules.d.id,
																						Modules.d.code,
																						Modules.d.name,
																						Modules.d.provider,
																						l.version,
																						Modules.d.module,
																						1 ) }">
				<MvIF EXPR = "{ NOT l.ok }">
					<MvEVAL EXPR = "{ Upgrade_Log_Error( '[Domain]', 'Upgrade_Domain_Module', g.Error_Code $ ': ' $ g.Error_Message ) }">
				</MvIF>
			</MvIF>
		</MvIF>

		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'upgrade_modules', 'finished', Modules.d.module, '', '' ) }">
	<MvELSE>
		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'upgrade_modules', 'skipped', Modules.d.module, '', '' ) }">	
	</MvIF>
		
	<MvASSIGN NAME = "g.Domain_Module_Record" VALUE = "{ g.Domain_Module_Record + 1 }">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Module_New" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Domain_Module_New_Pos ) }">

	<MvIF EXPR = "{ l.pos LE g.Domain_Module_New_Count }">
		<MvASSIGN NAME = "l.module" VALUE = "{ g.Domain_Module_New[ l.pos ]:Module }">

		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'install_modules', 'start', l.module, '', '' ) }">

		<MvDO FILE = "{ Domain.d.mod_root $ g.Version_Path $ l.module }" NAME = "l.type" VALUE = "{ Module_Type() }">
		<MvDO FILE = "{ Domain.d.mod_root $ g.Version_Path $ l.module }" NAME = "l.code" VALUE = "{ Module_Code() }">
		<MvDO FILE = "{ Domain.d.mod_root $ g.Version_Path $ l.module }" NAME = "l.name" VALUE = "{ Module_Name() }">
		<MvDO FILE = "{ Domain.d.mod_root $ g.Version_Path $ l.module }" NAME = "l.provider" VALUE = "{ Module_Provider() }">
		<MvDO FILE = "{ Domain.d.mod_root $ g.Version_Path $ l.module }" NAME = "l.version" VALUE = "{ Module_Version() }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_Module_New( l.name ) }">

		<MvDO FILE = "{ g.Upgrade_Library_DB }" NAME = "l.ok" VALUE = "{ Module_Insert( l.type, l.code, l.name, l.provider, l.version, l.module, 1 ) }">
		<MvIF EXPR = "{ l.ok }">
			<MvDO FILE = "{ Domain.d.mod_root $ g.Version_Path $ l.module }" NAME = "l.ok" VALUE = "{ Module_Install() }">
		</MvIF>

		<MvEVAL EXPR = "{ Upgrade_Log( '[Domain]', 'install_modules', 'finished', l.module, '', '' ) }">

		<MvASSIGN NAME = "g.Domain_Module_New_Pos" VALUE = "{ g.Domain_Module_New_Pos + 1 }">
		<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.ok" VALUE = 1>
	<MvASSIGN NAME = "l.directory" VALUE = "{ g.MerchantPath $ padl( g.Current_Store_ID, 8, '0' ) $ '/' }">
	<MvIF EXPR = "{ NOT fmkdir( l.directory $ 'upgrade/' ) }">
		<!--<MvFUNCTIONRETURN VALUE = 0>-->
	</MvIF>

	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Store_DB_Pos ) }">
	<MvIF EXPR = "{ l.pos LE g.Store_DB_Count }">
		<MvASSIGN NAME = "l.db_finished" VALUE = 0>

		<MvASSIGN NAME = "l.operation" VALUE = "{ g.Store_DB[ l.pos ]:Operation }">
		<MvASSIGN NAME = "l.filename" VALUE = "{ g.Store_DB[ l.pos ]:Filename }">
		<MvASSIGN NAME = "l.fields" VALUE = "{ g.Store_DB[ l.pos ]:Fields }">
		<MvASSIGN NAME = "l.record" VALUE = "{ g.Store_DB[ l.pos ]:Record }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_DB( l.operation, l.filename, -1, 0 ) }">

		<MvIF EXPR = "{ l.record NE 0 }">
			<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'DB', l.operation, l.filename, 'resuming', l.record ) }">
		<MvELSE>
			<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'DB', l.operation, l.filename, 'started', '' ) }">
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'new' }">
			<MvCREATE NAME = "Temporary"
					  DATABASE = "{ l.directory $ 'upgrade/' $ l.filename }"
					  FIELDS = "{ l.fields }">
			<MvIF EXPR = "{ MvCREATE_Error }">
				<MvASSIGN NAME = "l.ok" VALUE = 0>
				<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_DB', MvCREATE_Error ) }">
			<MvELSE>
				<MvIF EXPR = "{ NOT Upgrade_Store_DB_New( l.filename ) }">
					<MvCOMMENT> Handled by lower level </MvCOMMENT>
				</MvIF>

				<MvCLOSE NAME = "Temporary">
			</MvIF>

			<MvEVAL EXPR = "{ Upgrade_Draw_Status_DB( l.operation, l.filename, -1, 0 ) }">
			<MvASSIGN NAME = "l.db_finished" VALUE = 1>
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'change' }">
			<MvOPEN NAME = "Original"
					DATABASE = "{ l.directory $ l.filename }">
			<MvIF EXPR = "{ MvOPEN_Error }">
				<MvASSIGN NAME = "l.ok" VALUE = 0>
				<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_DB', MvOPEN_Error ) }">
			<MvELSE>
				<MvFILTER NAME = "Original" FILTER = "{ NOT Original.d.deleted }">
				<MvASSIGN NAME = "l.temp_open" VALUE = 0>

				<MvIF EXPR = "{ l.record EQ 0 }">
					<MvCREATE NAME = "Temporary"
							  DATABASE = "{ l.directory $ 'upgrade/' $ l.filename }"
							  FIELDS = "{ l.fields }">
					<MvIF EXPR = "{ MvCREATE_Error }">
						<MvASSIGN NAME = "l.ok" VALUE = 0>
						<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_DB', MvCREATE_Error ) }">
					<MvELSE>
						<MvASSIGN NAME = "l.temp_open" VALUE = 1>
					</MvIF>
				<MvELSE>
					<MvOPEN NAME = "Temporary"
							DATABASE = "{ l.directory $ 'upgrade/' $ l.filename }">
					<MvIF EXPR = "{ MvOPEN_Error }">
						<MvASSIGN NAME = "l.ok" VALUE = 0>
						<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_DB', MvOPEN_Error ) }">
					<MvELSE>
						<MvASSIGN NAME = "l.temp_open" VALUE = 1>
					</MvIF>
				</MvIF>

				<MvIF EXPR = "{ l.temp_open }">
					<MvGO NAME = "Original" ROW = "top">
					<MvIF EXPR = "{ l.record }">
						<MvSKIP NAME = "Original" ROWS = "{ l.record }">
					</MvIF>

					<MvEVAL EXPR = "{ Upgrade_Draw_Status_DB( l.operation, l.filename, Original.d.recno, Original.d.totrec ) }">

					<MvASSIGN NAME = "l.records" VALUE = 0>
					<MvWHILE EXPR = "{ ( NOT Original.d.EOF ) AND ( l.records LT 100 ) }">
						<MvASSIGN NAME = "l.records" VALUE = "{ l.records + 1 }">
											
						<MvIF EXPR = "{ NOT Upgrade_Store_DB_Change_ProcessRecord( l.filename ) }">
							<MvCOMMENT> Handled by lower level </MvCOMMENT>
						</MvIF>

						<MvSKIP NAME = "Original" ROWS = 1>
					</MvWHILE>

					<MvIF EXPR = "{ Original.d.EOF }">
						<MvEVAL EXPR = "{ Upgrade_Draw_Status_DB( l.operation, l.filename, Original.d.totrec, Original.d.totrec ) }">
						<MvASSIGN NAME = "l.db_finished" VALUE = 1>
					<MvELSE>
						<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'DB', l.operation, l.filename, 'resume', l.record + l.records ) }">
						<MvASSIGN NAME = "g.Store_DB" INDEX = "{ l.pos }" MEMBER = "Record" VALUE = "{ l.record + l.records }">
					</MvIF>

					<MvCLOSE NAME = "Temporary">
				</MvIF>

				<MvCLOSE NAME = "Original">
			</MvIF>
		</MvIF>

		<MvIF EXPR = "{ ( l.db_finished ) OR ( NOT l.ok ) }">
			<MvIF EXPR = "{ l.ok }">
				<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'DB', l.operation, l.filename, 'completed', '' ) }">
			</MvIF>
			
			<MvASSIGN NAME = "g.Store_DB" INDEX = "{ l.pos }" MEMBER = "Record" VALUE = 0>
			<MvASSIGN NAME = "g.Store_DB_Pos" VALUE = "{ g.Store_DB_Pos + 1 }">
			<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
		</MvIF>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Index" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.directory" VALUE = "{ g.MerchantPath $ padl( g.Current_Store_ID, 8, '0' ) $ '/' }">
	<MvIF EXPR = "{ NOT fmkdir( l.directory $ 'upgrade/' ) }">
		<!--<MvFUNCTIONRETURN VALUE = 0>-->
	</MvIF>

	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Store_DB_Index_Pos ) }">
	<MvIF EXPR = "{ l.pos LE g.Store_DB_Index_Count }">
		<MvASSIGN NAME = "l.type"		VALUE = "{ g.Store_DB_Index[ l.pos ]:Type }">
		<MvASSIGN NAME = "l.db_name"	VALUE = "{ g.Store_DB_Index[ l.pos ]:DB_Filename }">
		<MvASSIGN NAME = "l.db_alias"	VALUE = "{ g.Store_DB_Index[ l.pos ]:DB_Alias }">
		<MvASSIGN NAME = "l.index_name"	VALUE = "{ g.Store_DB_Index[ l.pos ]:Index }">
		<MvASSIGN NAME = "l.expression"	VALUE = "{ g.Store_DB_Index[ l.pos ]:Expression }">
		<MvASSIGN NAME = "l.flags"		VALUE = "{ g.Store_DB_Index[ l.pos ]:Flags }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_Index( 'index', l.db_name, l.index_name ) }">
		<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'Index', 'index', l.index_name, 'started', '' ) }">

		<MvIF EXPR = "{ l.type EQ 'original' }">
			<MvOPEN NAME = "{ l.db_alias }"
					DATABASE = "{ l.directory $ l.db_name }">
		</MvIF>

		<MvIF EXPR = "{ l.type EQ 'temporary' }">
			<MvOPEN NAME = "{ l.db_alias }"
					DATABASE = "{ l.directory $ 'upgrade/' $ l.db_name }">
		</MvIF>

		<MvIF EXPR = "{ MvOPEN_Error }">
			<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_DB_Index', MvOPEN_Error ) }">
		<MvELSE>
			<MvMAKEINDEX NAME = "{ l.db_alias }"
						 INDEXFILE = "{ l.directory $ 'upgrade/' $ l.index_name }"
						 EXPRESSION = "l.expression"
						 FLAGS = "{ l.flags }" EXPRESSION_TYPE = "variable">
			<MvIF EXPR = "{ MvMAKEINDEX_Error }">
				<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_DB_Index', MvMAKEINDEX_Error ) }">
			</MvIF>

			<MvCLOSE NAME = "{ l.db_alias }">
		</MvIF>

		<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'Index', 'index', l.index_name, 'completed', '' ) }">
		<MvASSIGN NAME = "g.Store_DB_Index_Pos" VALUE = "{ g.Store_DB_Index_Pos + 1 }">
		<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_Rename_DB" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.directory" VALUE = "{ g.MerchantPath $ padl( g.Current_Store_ID, 8, '0' ) $ '/' }">

	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Store_DB_Pos ) }">
	<MvIF EXPR = "{ l.pos LE g.Store_DB_Count }">
		<MvASSIGN NAME = "l.operation" VALUE = "{ g.Store_DB[ l.pos ]:Operation }">
		<MvASSIGN NAME = "l.filename" VALUE = "{ g.Store_DB[ l.pos ]:Filename }">
		<MvASSIGN NAME = "l.fields" VALUE = "{ g.Store_DB[ l.pos ]:Fields }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_Rename( l.filename ) }">

		<MvIF EXPR = "{ l.operation EQ 'change' }">		
			<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'DB', 'rename', l.filename, 'rename original', g.MerchanPath $ l.filename ) }">
			<MvIF EXPR = "{ NOT frename( l.directory $ l.filename, l.directory $ l.filename $ '.orig' ) }">
				<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_Rename_DB', 'Unable to rename \'' $ l.directory $ l.filename $ '\' to \'' $ l.directory $ l.filename $ '.orig\'' ) }">
			</MvIF>
		</MvIF>

		<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'DB', 'rename', l.filename, 'rename temporary', l.directory $ 'upgrade/' $ l.filename ) }">
		<MvIF EXPR = "{ NOT frename( l.directory $ 'upgrade/' $ l.filename, l.directory $ l.filename ) }">
			<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_Rename_DB', 'Unable to rename \'' $ l.directory $ 'upgrade/' $ l.filename $ '\' to \'' $ l.directory $ l.filename $ '\'' ) }">
		</MvIF>

		<MvIF EXPR = "{ l.operation EQ 'change' }">		
			<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'DB', 'rename', l.filename, 'delete original', l.directory $ l.filename $ '.orig' ) }">
			<MvIF EXPR = "{ NOT fdelete( l.directory $ l.filename $ '.orig' ) }">
				<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_Rename_DB', 'Unable to delete \'' $ l.directory $ l.filename $ '.orig\'' ) }">
			</MvIF>
		</MvIF>

		<MvIF EXPR = "{ 'MEMO' IN l.fields }">
			<MvASSIGN NAME = "l.memo_filename" VALUE = "{ substring( l.filename, 1, '.' IN l.filename ) $ 'dbt' }">
			<MvASSIGN NAME = "l.old_memo_exists" VALUE = "{ fexists( l.directory $ l.memo_filename ) }">

			<MvIF EXPR = "{ ( l.operation EQ 'change' ) AND l.old_memo_exists }">
				<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'DB', 'rename', l.filename, 'rename original memo', l.directory $ l.memo_filename ) }">
				<MvIF EXPR = "{ NOT frename( l.directory $ l.memo_filename, l.directory $ l.memo_filename $ '.orig' ) }">
					<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_Rename_DB', 'Unable to rename \'' $ l.directory $ l.memo_filename $ '\' to \'' $ l.directory $ l.memo_filename $ '.orig\'' ) }">
				</MvIF>
			</MvIF>

			<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'DB', 'rename', l.filename, 'rename temporary', l.directory $ 'upgrade/' $ l.memo_filename ) }">
			<MvIF EXPR = "{ NOT frename( l.directory $ 'upgrade/' $ l.memo_filename, l.directory $ l.memo_filename ) }">
				<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_Rename_DB', 'Unable to rename \'' $ l.directory $ 'upgrade/' $ l.memo_filename $ '\' to \'' $ l.directory $ l.memo_filename $ '\'' ) }">
			</MvIF>

			<MvIF EXPR = "{ ( l.operation EQ 'change' ) AND l.old_memo_exists }">
				<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'DB', 'rename', l.filename, 'delete original', l.directory $ l.memo_filename $ '.orig' ) }">
				<MvIF EXPR = "{ NOT fdelete( l.directory $ l.memo_filename $ '.orig' ) }">
					<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_Rename_DB', 'Unable to delete \'' $ l.directory $ l.memo_filename $ '.orig\'' ) }">
				</MvIF>
			</MvIF>
		</MvIF>

		<MvASSIGN NAME = "g.Store_DB_Pos" VALUE = "{ g.Store_DB_Pos + 1 }">
		<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_Rename_DB_Index" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.directory" VALUE = "{ g.MerchantPath $ padl( g.Current_Store_ID, 8, '0' ) $ '/' }">

	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Store_DB_Index_Pos ) }">
	<MvIF EXPR = "{ l.pos LE g.Store_DB_Index_Count }">
		<MvASSIGN NAME = "l.filename" VALUE = "{ g.Store_DB_Index[ l.pos ]:Index }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_Rename( l.filename ) }">

		<MvIF EXPR = "{ fexists( l.directory $ l.filename ) }">
			<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'Index', 'rename', l.filename, 'delete original', g.MerchanPath $ l.filename ) }">
			<MvIF EXPR = "{ NOT fdelete( l.directory $ l.filename ) }">
				<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_Rename_DB_Index', 'Unable to delete \'' $ l.directory $ l.filename $ '\'' ) }">
			</MvIF>
		</MvIF>

		<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'Index', 'rename', l.filename, 'rename temporary', l.directory $ 'upgrade/' $ l.filename ) }">
		<MvIF EXPR = "{ NOT frename( l.directory $ 'upgrade/' $ l.filename, l.directory $ l.filename ) }">
			<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_Rename_DB_Index', 'Unable to rename \'' $ l.directory $ 'upgrade/' $ l.filename $ '\' to \'' $ l.directory $ l.filename $ '\'' ) }">
		</MvIF>

		<MvASSIGN NAME = "g.Store_DB_Index_Pos" VALUE = "{ g.Store_DB_Index_Pos + 1 }">
		<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_Cleanup" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.directory" VALUE = "{ g.MerchantPath $ padl( g.Current_Store_ID, 8, '0' ) $ '/' }">

	<MvEVAL EXPR = "{ Upgrade_Clear_Status() }">

	<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, '', 'cleanup', l.directory $ 'upgrade/', 'delete directory', '' ) }">
	<MvIF EXPR = "{ NOT fdelete( l.directory $ 'upgrade/' ) }">
		<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_Cleanup', 'Unable to delete \'' $ l.directory $ 'upgrade/' $ '\'' ) }">
	</MvIF>

	<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_Key" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.directory" VALUE = "{ g.MerchantPath $ padl( g.Current_Store_ID, 8, '0' ) $ '/' }">
	
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Store_Key_Pos ) }">
	<MvIF EXPR = "{ l.pos LE g.Store_Key_Count }">
		<MvASSIGN NAME = "l.type" VALUE = "{ g.Store_Key[ l.pos ]:Type }">
		<MvASSIGN NAME = "l.start" VALUE = "{ g.Store_Key[ l.pos ]:Start }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_StoreKey( l.type ) }">
		
		<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'store_key', 'start', l.type, 'start', l.start ) }">
		<MvOPEN NAME = "StoreKeys" 
				DATABASE = "{ l.directory $ 'storekey.dbf' }" 
				INDEXES = "{ l.directory $ 'storekey.mvx' }">
		<MvIF EXPR = "{ MvOPEN_Error }">
			<MvEVAL EXPR = "{ Upgrade_Log_Error( g.Current_Store_Name, 'Upgrade_Store_Key', MvOPEN_Error ) }">
		<MvELSE>
			<MvASSIGN NAME = "StoreKeys.d.type" VALUE = "{ l.type }">
			<MvASSIGN NAME = "StoreKeys.d.maxvalue" VALUE = "{ l.start - 1 }">
			<MvADD NAME = "StoreKeys">
		</MvIF>

		<MvASSIGN NAME = "g.Store_Key_Pos" VALUE = "{ g.Store_Key_Pos + 1 }">
		<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	</MvIF>
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Key" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.directory" VALUE = "{ g.MerchantPath }">
	
	<MvASSIGN NAME = "l.pos" VALUE = "{ int( g.Domain_Key_Pos ) }">
	<MvIF EXPR = "{ l.pos LE g.Domain_Key_Count }">
		<MvASSIGN NAME = "l.type" VALUE = "{ g.Domain_Key[ l.pos ]:Type }">
		<MvASSIGN NAME = "l.start" VALUE = "{ g.Domain_Key[ l.pos ]:Start }">

		<MvEVAL EXPR = "{ Upgrade_Draw_Status_DomainKey( l.type ) }">
		
		<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Domain_Name, 'key', 'start', l.type, 'start', l.start ) }">
		<MvOPEN NAME = "Keys" 
				DATABASE = "{ l.directory $ 'keys.dbf' }" 
				INDEXES = "{ l.directory $ 'keys.mvx' }">
		<MvIF EXPR = "{ MvOPEN_Error }">
			<MvEVAL EXPR = "{ Upgrade_Log_Error( [Domain], 'Upgrade_Domain_Key', MvOPEN_Error ) }">
		<MvELSE>
			<MvASSIGN NAME = "Keys.d.type" VALUE = "{ l.type }">
			<MvASSIGN NAME = "Keys.d.maxvalue" VALUE = "{ l.start - 1 }">
			<MvADD NAME = "Keys">
		</MvIF>

		<MvASSIGN NAME = "g.Domain_Key_Pos" VALUE = "{ g.Domain_Key_Pos + 1 }">
		<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">
	</MvIF>
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_Module" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvEVAL EXPR = "{ Upgrade_Draw_Status_Module( Modules.d.name ) }">

	<MvDO FILE = "{ g.Module_Root $ Modules.d.module }" NAME = "l.version" VALUE = "{ Module_Version() }">
	<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'upgrade_modules', 'start', Modules.d.module, 'check version', l.version $ ' ' $ Modules.d.version ) }">
	<MvIF EXPR = "{ l.version NE Modules.d.version }">
		<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'upgrade_modules', 'update', Modules.d.module, '', '' ) }">
		<MvDO FILE = "{ g.Module_Root $ Modules.d.module }" NAME = "l.ok" VALUE = "{ Module_Upgrade_Store( Modules.d.version ) }">
		<MvIF EXPR = "{ NOT l.ok }">
			<MvEVAL EXPR = "{ Upgrade_Log_Error( Stores.d.name, 'Upgrade_Store_Module', g.Error_Code $ ': ' $ g.Error_Message ) }">
		</MvIF>
	</MvIF>

	<MvEVAL EXPR = "{ Upgrade_Log( g.Current_Store_Name, 'upgrade_modules', 'finished', Modules.d.module, '', '' ) }">
	<MvASSIGN NAME = "g.Store_Module_Record" VALUE = "{ g.Store_Module_Record + 1 }">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Misc_Perform" PARAMETERS = "mnemonic" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.mnemonic EQ 'language.dat' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Domain_Misc_Perform_LanguageDAT() }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 0>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Misc_Perform_LanguageDAT" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvEXPORT FILE = "{ g.MerchantPath $ 'language.dat' }" FIELDS = "s.miva_language" DELIMITER = "">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Privilege_Name" PARAMETERS = "privilege" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.name" VALUE = "">

	<MvIF EXPR = "{ l.privilege EQ 'STCT' }">
		<MvLOCALIZED NAME = "l.name" ID = "MER-UPG-00132">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Countries</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">L�nder</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
	</MvIF>

	<MvIF EXPR = "{ l.privilege EQ 'INVT' }">
		<MvLOCALIZED NAME = "l.name" ID = "MER-UPG-00148">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Inventory</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
	</MvIF>

	<MvIF EXPR = "{ l.privilege EQ 'AFLT' }">
		<MvLOCALIZED NAME = "l.name" ID = "MER-UPG-00149">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Affiliates</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Angegliederte Unternehmen</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
	</MvIF>

	<MvIF EXPR = "{ l.privilege EQ 'MONY' }">
		<MvLOCALIZED NAME = "l.name" ID = "MER-UPG-00150">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Affiliate Money</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Partner Finanzen</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
	</MvIF>

	<MvIF EXPR = "{ l.privilege EQ 'ATMP' }">
		<MvLOCALIZED NAME = "l.name" ID = "MER-UPG-00151">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Attribute Templates</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Attribut-Vorlagen</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = "{ l.name }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_DB_New" PARAMETERS = "filename" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.filename EQ 'country.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Domain_DB_New_Countries() }">
	</MvIF>
	
	<MvIF EXPR = "{ l.filename EQ 'tasks.dbf' }">
		<MvDO FILE = "{ g.Module_Feature_STP_AD }" NAME = "l.ok" VALUE = "{ STP_Upgrade_Domain_DB_New_Tasks() }">
		<MvFUNCTIONRETURN VALUE = "{ l.ok }">
	</MvIF>
	
	<MvIF EXPR = "{ l.filename EQ 'notes.dbf' }">
		<MvFUNCTIONRETURN VALUE = "1">	
	</MvIF>


	<MvFUNCTIONRETURN VALUE = 0>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_DB_New_Countries" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.ok" VALUE = 1>
	<MvASSIGN NAME = "l.country_count" VALUE = 0>
	<MvASSIGN NAME = "l.country_list" VALUE = "{ 'COUNTRIES.' $ s.miva_language }">

	<MvIF EXPR = "{ NOT sfcopy( g.Version_Path $ l.country_list, l.country_list ) }">
		<MvASSIGN NAME = "l.ok" VALUE = 0>
	<MvELSE>
		<MvIMPORT FILE = "{ l.country_list }"
				  FIELDS = "l.name, l.alpha, l.numeric"
				  DELIMITER = "|">
			<MvASSIGN NAME = "l.country_count" VALUE = "{ l.country_count + 1 }">

			<MvASSIGN NAME = "Temporary.d.id"		VALUE = "{ l.country_count }">
			<MvASSIGN NAME = "Temporary.d.name"		VALUE = "{ l.name }">
			<MvASSIGN NAME = "Temporary.d.alpha"	VALUE = "{ l.alpha }">
			<MvASSIGN NAME = "Temporary.d.numeric"	VALUE = "{ l.numeric }">

			<MvADD NAME = "Temporary">
		</MvIMPORT>

		<MvASSIGN NAME = "l.ok" VALUE = "{ fdelete( l.country_list ) }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = "{ l.ok }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_DB_Change_ProcessRecord" PARAMETERS = "filename" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.filename EQ 'stores.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Domain_DB_Change_ProcessRecord_Stores() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'domain.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Domain_DB_Change_ProcessRecord_Domain() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'users.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Domain_DB_Change_ProcessRecord_Users() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'modules.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Domain_DB_Change_ProcessRecord_Modules() }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 0>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_DB_Change_ProcessRecord_Stores" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.id"			VALUE = "{ Original.d.id }">
	<MvASSIGN NAME = "Temporary.d.manager_id"	VALUE = "{ Original.d.manager_id }">
	<MvASSIGN NAME = "Temporary.d.code"			VALUE = "{ Original.d.code }">
	<MvASSIGN NAME = "Temporary.d.license"		VALUE = "{ Original.d.license }">
	<MvASSIGN NAME = "Temporary.d.name"			VALUE = "{ Original.d.name }">
	<MvASSIGN NAME = "Temporary.d.owner"		VALUE = "{ Original.d.owner }">
	<MvASSIGN NAME = "Temporary.d.email"		VALUE = "{ Original.d.email }">
	<MvASSIGN NAME = "Temporary.d.company"		VALUE = "{ Original.d.company }">
	<MvASSIGN NAME = "Temporary.d.address"		VALUE = "{ Original.d.address }">
	<MvASSIGN NAME = "Temporary.d.city"			VALUE = "{ Original.d.city }">
	<MvASSIGN NAME = "Temporary.d.state"		VALUE = "{ Original.d.state }">
	<MvASSIGN NAME = "Temporary.d.zip"			VALUE = "{ Original.d.zip }">
	<MvASSIGN NAME = "Temporary.d.phone"		VALUE = "{ Original.d.phone }">
	<MvASSIGN NAME = "Temporary.d.fax"			VALUE = "{ Original.d.fax }">
	<MvASSIGN NAME = "Temporary.d.country"		VALUE = "{ Original.d.country }">
	<MvASSIGN NAME = "Temporary.d.wtunits"		VALUE = "{ Original.d.wtunits }">
	<MvASSIGN NAME = "Temporary.d.baskexp"		VALUE = "{ Original.d.baskexp }">
	<MvASSIGN NAME = "Temporary.d.pgrp_ovlp"	VALUE = "{ Original.d.pgrp_ovlp }">
	<MvASSIGN NAME = "Temporary.d.tax_id"		VALUE = "{ Original.d.tax_id }">
	<MvASSIGN NAME = "Temporary.d.currncy_id"	VALUE = "{ Original.d.currncy_id }">
	<MvASSIGN NAME = "Temporary.d.ui_id"		VALUE = "{ Original.d.ui_id }">

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 3.00 }">
		<MvLOCALIZED NAME = "Temporary.d.mnt_warn" ID = "MER-UPG-00032">
			<MvLOCALIZED-TOKEN NAME = "p" VALUE = "%">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">%p%store_name%p% will be closing in %p%maint_countdown%p% minutes for maintenance.  Please complete your selection and proceed to the checkout.  All abandoned baskets will be emptied.</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">%store_name% wird in %maint_countdown% Minuten zwecks Wartungsarbeiten geschlossen. Bitte beenden Sie Ihre Auswahl und gehen Sie dann zur Kasse. Alle zur�ckgelassenen Warenk�rbe werden entleert.</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvLOCALIZED NAME = "Temporary.d.mnt_close" ID = "MER-UPG-00033">
			<MvLOCALIZED-TOKEN NAME = "p" VALUE = "%">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Sorry, %p%store_name%p% is closed for maintenance.  We will re-open soon. Thanks</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Leider ist %store_name% zurzeit wegen Wartungsarbeiten geschlossen. Wir werden aber bald wieder ge�ffnet sein. Vielen Dank f�r Ihr Verst�ndnis.</MvLOCALIZED-TEXT>
		</MvLOCALIZED>

		<MvASSIGN NAME = "Temporary.d.mnt_no_new"	VALUE = 0>
		<MvASSIGN NAME = "Temporary.d.omin_quant"	VALUE = 0>
		<MvASSIGN NAME = "Temporary.d.omin_price"	VALUE = 0>
		<MvASSIGN NAME = "Temporary.d.omin_all"		VALUE = 1>
		<MvASSIGN NAME = "Temporary.d.omin_msg"		VALUE = "">
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.mnt_warn"		VALUE = "{ Original.d.mnt_warn }">
		<MvASSIGN NAME = "Temporary.d.mnt_close"	VALUE = "{ Original.d.mnt_close }">
		<MvASSIGN NAME = "Temporary.d.omin_quant"	VALUE = "{ Original.d.mnt_no_new }">
		<MvASSIGN NAME = "Temporary.d.omin_quant"	VALUE = "{ Original.d.omin_quant }">
		<MvASSIGN NAME = "Temporary.d.omin_price"	VALUE = "{ Original.d.omin_price }">
		<MvASSIGN NAME = "Temporary.d.omin_all"		VALUE = "{ Original.d.omin_all }">
		<MvASSIGN NAME = "Temporary.d.omin_msg"		VALUE = "{ Original.d.omin_msg }">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_DB_Change_ProcessRecord_Domain" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.name"	VALUE = "{ Original.d.name }">
	<MvASSIGN NAME = "Temporary.d.license"	VALUE = "{ Original.d.license }">
	<MvASSIGN NAME = "Temporary.d.version"	VALUE = "{ Original.d.version }">
	<MvASSIGN NAME = "Temporary.d.owner"	VALUE = "{ Original.d.owner }">
	<MvASSIGN NAME = "Temporary.d.email"	VALUE = "{ Original.d.email }">
	<MvASSIGN NAME = "Temporary.d.company"	VALUE = "{ Original.d.company }">
	<MvASSIGN NAME = "Temporary.d.address"	VALUE = "{ Original.d.address }">
	<MvASSIGN NAME = "Temporary.d.city"	VALUE = "{ Original.d.city }">
	<MvASSIGN NAME = "Temporary.d.state"	VALUE = "{ Original.d.state }">
	<MvASSIGN NAME = "Temporary.d.zip"	VALUE = "{ Original.d.zip }">
	<MvASSIGN NAME = "Temporary.d.country"	VALUE = "{ Original.d.country }">
	<MvASSIGN NAME = "Temporary.d.phone"	VALUE = "{ Original.d.phone }">
	<MvASSIGN NAME = "Temporary.d.fax"	VALUE = "{ Original.d.fax }">
	<MvASSIGN NAME = "Temporary.d.mm_url"	VALUE = "{ Original.d.mm_url }">
	<MvASSIGN NAME = "Temporary.d.mm_surl"	VALUE = "{ Original.d.mm_surl }">
	<MvASSIGN NAME = "Temporary.d.admin_surl"	VALUE = "{ Original.d.admin_surl }">
	<MvASSIGN NAME = "Temporary.d.image_root"	VALUE = "{ Original.d.image_root }">
	<MvASSIGN NAME = "Temporary.d.base_url"	VALUE = "{ Original.d.base_url }">
	<MvASSIGN NAME = "Temporary.d.base_surl"	VALUE = "{ Original.d.base_surl }">
	<MvASSIGN NAME = "Temporary.d.mod_root"	VALUE = "{ Original.d.mod_root }">
	<MvASSIGN NAME = "Temporary.d.mod_sroot"	VALUE = "{ Original.d.mod_sroot }">
	<MvASSIGN NAME = "Temporary.d.admexp"	VALUE = "{ Original.d.admexp }">
	<MvASSIGN NAME = "Temporary.d.mailhost"	VALUE = "{ Original.d.mailhost }">
	<MvASSIGN NAME = "Temporary.d.mail_angl"	VALUE = "{ Original.d.mail_angl }">
	<MvASSIGN NAME = "Temporary.d.ui_id"	VALUE = "{ Original.d.ui_id }">
	<MvASSIGN NAME = "Temporary.d.d_set"	VALUE = "{ Original.d.d_set }">
	<MvASSIGN NAME = "Temporary.d.d_mod"	VALUE = "{ Original.d.d_mod }">
	<MvASSIGN NAME = "Temporary.d.d_pay"	VALUE = "{ Original.d.d_pay }">
	<MvASSIGN NAME = "Temporary.d.d_ship"	VALUE = "{ Original.d.d_ship }">
	<MvASSIGN NAME = "Temporary.d.d_ful"	VALUE = "{ Original.d.d_ful }">
	<MvASSIGN NAME = "Temporary.d.d_usr"	VALUE = "{ Original.d.d_usr }">
	<MvASSIGN NAME = "Temporary.d.d_log"	VALUE = "{ Original.d.d_log }">
	<MvASSIGN NAME = "Temporary.d.d_sys"	VALUE = "{ Original.d.d_sys }">
	<MvASSIGN NAME = "Temporary.d.d_utl"	VALUE = "{ Original.d.d_utl }">
	<MvASSIGN NAME = "Temporary.d.maxstores"	VALUE = "{ Original.d.maxstores }">
	<MvASSIGN NAME = "Temporary.d.lo_time"	VALUE = "{ Original.d.lo_time }">
	<MvASSIGN NAME = "Temporary.d.li_trys"	VALUE = "{ Original.d.li_trys }">

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 4.00 }">
		<MvASSIGN NAME = "Temporary.d.d_set"		VALUE = "0">
		<MvASSIGN NAME = "Temporary.d.d_mod"		VALUE = "0">
		<MvASSIGN NAME = "Temporary.d.d_pay"		VALUE = "0">
		<MvASSIGN NAME = "Temporary.d.d_ship"		VALUE = "0">
		<MvASSIGN NAME = "Temporary.d.d_ful"		VALUE = "0">
		<MvASSIGN NAME = "Temporary.d.d_usr"		VALUE = "0">
		<MvASSIGN NAME = "Temporary.d.d_log"		VALUE = "0">
		<MvASSIGN NAME = "Temporary.d.d_sys"		VALUE = "0">
		<MvASSIGN NAME = "Temporary.d.d_utl"		VALUE = "0">
		<MvASSIGN NAME = "Temporary.d.maxstores"	VALUE = "">
		<MvASSIGN NAME = "Temporary.d.lo_time"		VALUE = "15">
		<MvASSIGN NAME = "Temporary.d.li_trys"		VALUE = "3">
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.d_set"		VALUE = "{ Original.d.d_set }">
		<MvASSIGN NAME = "Temporary.d.d_mod"		VALUE = "{ Original.d.d_mod }">
		<MvASSIGN NAME = "Temporary.d.d_pay"		VALUE = "{ Original.d.d_pay }">
		<MvASSIGN NAME = "Temporary.d.d_ship"		VALUE = "{ Original.d.d_ship }">
		<MvASSIGN NAME = "Temporary.d.d_ful"		VALUE = "{ Original.d.d_ful }">
		<MvASSIGN NAME = "Temporary.d.d_usr"		VALUE = "{ Original.d.d_usr }">
		<MvASSIGN NAME = "Temporary.d.d_log"		VALUE = "{ Original.d.d_log }">
		<MvASSIGN NAME = "Temporary.d.d_sys"		VALUE = "{ Original.d.d_sys }">
		<MvASSIGN NAME = "Temporary.d.d_utl"		VALUE = "{ Original.d.d_utl }">
		<MvASSIGN NAME = "Temporary.d.maxstores"	VALUE = "{ Original.d.maxstores }">
		<MvASSIGN NAME = "Temporary.d.lo_time"		VALUE = "{ Original.d.lo_time }">
		<MvASSIGN NAME = "Temporary.d.li_trys"		VALUE = "{ Original.d.li_trys }">
		<MvASSIGN NAME = "Temporary.d.upgd_ignr"	VALUE = "{ g.Merchant_Version }">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_DB_Change_ProcessRecord_Users" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.id"	VALUE = "{ Original.d.id }">
	<MvASSIGN NAME = "Temporary.d.parent_id"	VALUE = "{ Original.d.parent_id }">
	<MvASSIGN NAME = "Temporary.d.name"	VALUE = "{ Original.d.name }">
	<MvASSIGN NAME = "Temporary.d.password"	VALUE = "{ Original.d.password }">
	<MvASSIGN NAME = "Temporary.d.admin"	VALUE = "{ Original.d.admin }">
	<MvASSIGN NAME = "Temporary.d.create"	VALUE = "{ Original.d.create }">
	<MvASSIGN NAME = "Temporary.d.smod"	VALUE = "{ Original.d.smod }">

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 4.00 }">
		<MvASSIGN NAME = "Temporary.d.page_len"	VALUE = "10">
		<MvASSIGN NAME = "Temporary.d.t_fails"	VALUE = "0">
		<MvASSIGN NAME = "Temporary.d.c_fails"	VALUE = "0">
		<MvASSIGN NAME = "Temporary.d.lo_date"	VALUE = "0">
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.page_len"	VALUE = "{ Original.d.page_len }">
		<MvASSIGN NAME = "Temporary.d.t_fails"	VALUE = "{ Original.d.t_fails }">
		<MvASSIGN NAME = "Temporary.d.c_fails"	VALUE = "{ Original.d.c_fails }">
		<MvASSIGN NAME = "Temporary.d.lo_date"	VALUE = "{ Original.d.lo_date }">
		<MvASSIGN NAME = "Temporary.d.page_len"	VALUE = "{ Original.d.page_len }">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_DB_Change_ProcessRecord_Modules" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.id"	VALUE = "{ Original.d.id }">
	<MvASSIGN NAME = "Temporary.d.type"	VALUE = "{ Original.d.type }">
	<MvASSIGN NAME = "Temporary.d.code"	VALUE = "{ Original.d.code }">
	<MvASSIGN NAME = "Temporary.d.name"	VALUE = "{ Original.d.name }">
	<MvASSIGN NAME = "Temporary.d.provider"	VALUE = "{ Original.d.provider }">
	<MvASSIGN NAME = "Temporary.d.version"	VALUE = "{ Original.d.version }">
	<MvASSIGN NAME = "Temporary.d.module"	VALUE = "{ Original.d.module }">
	<MvASSIGN NAME = "Temporary.d.refcount"	VALUE = "{ Original.d.refcount }">
	<MvASSIGN NAME = "Temporary.d.active"	VALUE = "{ Original.d.active }">

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 4.00 }">
		<MvASSIGN NAME = "Temporary.d.active"	VALUE = "1">
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.active"	VALUE = "{ Original.d.active }">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_New" PARAMETERS = "filename" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.filename EQ 'baskchrg.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'ordrchrg.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'std_fld.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_New_StandardFields() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'str_cty.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_New_StoreCountries() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'invent.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'upslopts.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_New_UpsellOptions() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'relprod.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'inv_set.dbf' }">
		<MvOPEN NAME = "Upgrade_Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
		<MvDO FILE = "{ g.Module_Feature_INV_AD }" NAME = "l.ok" VALUE = "{ INV_Upgrade_Store_DB_New_InventorySettings() }">
		<MvCLOSE NAME = "Upgrade_Domain">
		<MvFUNCTIONRETURN VALUE = "{ l.ok }">
	</MvIF>
	
	<MvIF EXPR = "{ l.filename EQ 'affil.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'affern.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'affpay.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'afileml.dbf' }">
		<MvOPEN NAME = "Upgrade_Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
		<MvDO FILE = "{ g.Module_Feature_AFF }" NAME = "l.ok" VALUE = "{ AFF_Upgrade_Store_DB_New_AffiliateEmail() }">
		<MvCLOSE NAME = "Upgrade_Domain">
		<MvFUNCTIONRETURN VALUE = "l.ok">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'afilmng.dbf' }">
		<MvOPEN NAME = "Upgrade_Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
		<MvDO FILE = "{ g.Module_Feature_AFF }" NAME = "l.ok" VALUE = "{ AFF_Upgrade_Store_DB_New_AffiliateManage() }">
		<MvCLOSE NAME = "Upgrade_Domain">
		<MvFUNCTIONRETURN VALUE = "l.ok">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'afilopt.dbf' }">
		<MvDO FILE = "{ g.Module_Feature_AFF }" NAME = "l.ok" VALUE = "{ AFF_Upgrade_Store_DB_New_AffiliateOptions() }">
		<MvFUNCTIONRETURN VALUE = "l.ok">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'affsess.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>
	
	<MvIF EXPR = "{ l.filename EQ 'stats.dbf' }">
		<MvDO FILE = "{ g.Module_Feature_STA }" NAME = "l.ok" VALUE = "{ STA_Upgrade_Store_DB_New_Stats() }">
		<MvFUNCTIONRETURN VALUE = "l.ok">
	</MvIF>
	
	<MvIF EXPR = "{ l.filename EQ 'stasks.dbf' }">
		<MvDO FILE = "{ g.Module_Feature_STP_AD }" NAME = "l.ok" VALUE = "{ STP_Upgrade_Store_DB_New_StoreTasks() }">
		<MvFUNCTIONRETURN VALUE = "{ l.ok }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'snotes.dbf' }">
		<MvFUNCTIONRETURN VALUE = "1">	
	</MvIF>
	
	<MvIF EXPR = "{ l.filename EQ 'prdsta.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'attempl.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>
	
	<MvIF EXPR = "{ l.filename EQ 'atmpatt.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'attmpop.dbf' }">
		<MvFUNCTIONRETURN VALUE = 1>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 0>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_New_StandardFields" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.billing"		VALUE = "O">
	<MvASSIGN NAME = "Temporary.d.mode_fname"	VALUE = "R">
	<MvASSIGN NAME = "Temporary.d.mode_lname"	VALUE = "R">
	<MvASSIGN NAME = "Temporary.d.mode_email"	VALUE = "R">
	<MvASSIGN NAME = "Temporary.d.mode_comp"	VALUE = "O">
	<MvASSIGN NAME = "Temporary.d.mode_phone"	VALUE = "R">
	<MvASSIGN NAME = "Temporary.d.mode_fax"		VALUE = "O">
	<MvASSIGN NAME = "Temporary.d.mode_addr"	VALUE = "R">
	<MvASSIGN NAME = "Temporary.d.mode_city"	VALUE = "R">
	<MvASSIGN NAME = "Temporary.d.mode_zip"		VALUE = "R">

	<MvIF EXPR = "{ g.Current_Store_Country EQ 'DE' }">
		<MvASSIGN NAME = "Temporary.d.mode_state"	VALUE = "H">
		<MvASSIGN NAME = "Temporary.d.mode_cntry"	VALUE = "H">
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.mode_state"	VALUE = "R">
		<MvASSIGN NAME = "Temporary.d.mode_cntry"	VALUE = "R">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_New_StoreCountries" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ fexists( g.MerchantPath $ 'upgrade/' $ 'country.dbf' ) }">
		<MvOPEN NAME = "Upgrade_Countries" DATABASE = "{ g.MerchantPath $ 'upgrade/' $ 'country.dbf' }">
	<MvELSE>
		<MvOPEN NAME = "Upgrade_Countries" DATABASE = "{ g.MerchantPath $ 'country.dbf' }">
	</MvIF>
	
	<MvIF EXPR = "{ MvOPEN_Error }">
		<MvEVAL EXPR = "{ Upgrade_Log_Error( Upgrade_Store.d.name, 'Upgrade_Store_DB_New_StoreCountries', MvOPEN_Error ) }">
	<MvELSE>
		<MvGO NAME = "Upgrade_Countries" ROW = "top">
		<MvWHILE EXPR = "{ NOT Upgrade_Countries.d.EOF }">
			<MvASSIGN NAME = "Temporary.d.id"		VALUE = "{ Upgrade_Countries.d.id }">
			<MvASSIGN NAME = "Temporary.d.name"		VALUE = "{ Upgrade_Countries.d.name }">
			<MvASSIGN NAME = "Temporary.d.alpha"	VALUE = "{ Upgrade_Countries.d.alpha }">
			<MvASSIGN NAME = "Temporary.d.numeric"	VALUE = "{ Upgrade_Countries.d.numeric }">
			
			<MvADD NAME = "Temporary">
			<MvSKIP NAME = "Upgrade_Countries" ROWS = 1>
		</MvWHILE>

		<MvCLOSE NAME = "Upgrade_Countries">
	</MvIF>
	
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_New_AffiliateOptions" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.active"		VALUE = 0>
	<MvASSIGN NAME = "Temporary.d.signup"		VALUE = "A">
	<MvASSIGN NAME = "Temporary.d.hits"			VALUE = "0.00">
	<MvASSIGN NAME = "Temporary.d.percent"		VALUE = "0.00">
	<MvASSIGN NAME = "Temporary.d.flat"			VALUE = "0.00">
	<MvASSIGN NAME = "Temporary.d.terms"		VALUE = "">
	<MvASSIGN NAME = "Temporary.d.pay_thresh"	VALUE = "0.00">
	<MvASSIGN NAME = "Temporary.d.link_image"	VALUE = "">

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_New_UpsellOptions" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.prod_shown"	VALUE = 1>
	<MvASSIGN NAME = "Temporary.d.prod_sell"	VALUE = 1>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Change_ProcessRecord" PARAMETERS = "filename" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ l.filename EQ 'attr.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_Change_ProcessRecord_Attributes() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'opts.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_Change_ProcessRecord_Options() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'baskchrg.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_Change_ProcessRecord_BasketCharges() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'ordrchrg.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_Change_ProcessRecord_OrderCharges() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'products.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_Change_ProcessRecord_Products() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'cats.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_Change_ProcessRecord_Categories() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'basklist.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_Change_ProcessRecord_BasketList() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'baskets.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_Change_ProcessRecord_Baskets() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'baskopts.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_Change_ProcessRecord_BasketOptions() }">
	</MvIF>

	<MvIF EXPR = "{ l.filename EQ 'ordopts.dbf' }">
		<MvFUNCTIONRETURN VALUE = "{ Upgrade_Store_DB_Change_ProcessRecord_OrderOptions() }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 0>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Change_ProcessRecord_Attributes" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.id"			VALUE = "{ Original.d.id }">
	<MvASSIGN NAME = "Temporary.d.product_id"	VALUE = "{ Original.d.product_id }">
	<MvASSIGN NAME = "Temporary.d.default_id"	VALUE = "{ Original.d.default_id }">
	<MvASSIGN NAME = "Temporary.d.order"		VALUE = "{ Original.d.order }">
	<MvASSIGN NAME = "Temporary.d.code"			VALUE = "{ Original.d.code }">
	<MvASSIGN NAME = "Temporary.d.type"			VALUE = "{ Original.d.type }">
	<MvASSIGN NAME = "Temporary.d.prompt"		VALUE = "{ Original.d.prompt }">
	<MvASSIGN NAME = "Temporary.d.price"		VALUE = "{ Original.d.price }">
	<MvASSIGN NAME = "Temporary.d.required"		VALUE = "{ Original.d.required }">

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 2.10 }">
		<MvASSIGN NAME = "Temporary.d.cost"		VALUE = "{ Original.d.price }">
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.cost"		VALUE = "{ Original.d.cost }">
	</MvIF>

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 3.00 }">
		<MvASSIGN NAME = "Temporary.d.image"		VALUE = "">
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.image"		VALUE = "{ Original.d.image }">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Change_ProcessRecord_Options" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.id"			VALUE = "{ Original.d.id }">
	<MvASSIGN NAME = "Temporary.d.attr_id"		VALUE = "{ Original.d.attr_id }">
	<MvASSIGN NAME = "Temporary.d.order"		VALUE = "{ Original.d.order }">
	<MvASSIGN NAME = "Temporary.d.code"			VALUE = "{ Original.d.code }">
	<MvASSIGN NAME = "Temporary.d.prompt"		VALUE = "{ Original.d.prompt }">
	<MvASSIGN NAME = "Temporary.d.price"		VALUE = "{ Original.d.price }">

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 2.10 }">
		<MvASSIGN NAME = "Temporary.d.cost"		VALUE = "{ Original.d.price }">
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.cost"		VALUE = "{ Original.d.cost }">
	</MvIF>

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 3.00 }">
		<MvASSIGN NAME = "Temporary.d.image"		VALUE = "">
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.image"		VALUE = "{ Original.d.image }">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Change_ProcessRecord_BasketCharges" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.basket_id"	VALUE = "{ Original.d.basket_id }">
	<MvASSIGN NAME = "Temporary.d.charge_id"	VALUE = "{ Original.d.charge_id }">
	<MvASSIGN NAME = "Temporary.d.type"			VALUE = "{ Original.d.type }">
	<MvASSIGN NAME = "Temporary.d.desc"			VALUE = "{ Original.d.desc }">
	<MvASSIGN NAME = "Temporary.d.amount"		VALUE = "{ Original.d.amount }">
	<MvASSIGN NAME = "Temporary.d.disp_amt"		VALUE = "{ Original.d.disp_amt }">

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 2.22 }">
		<MvASSIGN NAME = "Temporary.d.module_id"	VALUE = 0>
		<MvASSIGN NAME = "Temporary.d.tax_exempt"	VALUE = 0>
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.module_id"	VALUE = "{ Original.d.module_id }">
		<MvASSIGN NAME = "Temporary.d.tax_exempt"	VALUE = "{ Original.d.tax_exempt }">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Change_ProcessRecord_OrderCharges" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.order_id"		VALUE = "{ Original.d.order_id }">
	<MvASSIGN NAME = "Temporary.d.charge_id"	VALUE = "{ Original.d.charge_id }">
	<MvASSIGN NAME = "Temporary.d.type"			VALUE = "{ Original.d.type }">
	<MvASSIGN NAME = "Temporary.d.desc"			VALUE = "{ Original.d.desc }">
	<MvASSIGN NAME = "Temporary.d.amount"		VALUE = "{ Original.d.amount }">
	<MvASSIGN NAME = "Temporary.d.disp_amt"		VALUE = "{ Original.d.disp_amt }">

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 2.22 }">
		<MvASSIGN NAME = "Temporary.d.module_id"	VALUE = 0>
		<MvASSIGN NAME = "Temporary.d.tax_exempt"	VALUE = 0>
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.module_id"	VALUE = "{ Original.d.module_id }">
		<MvASSIGN NAME = "Temporary.d.tax_exempt"	VALUE = "{ Original.d.tax_exempt }">
	</MvIF>
	
	<MvIF EXPR = "{ Temporary.d.order_id }">
		<MvADD NAME = "Temporary">
	</MvIF>
	
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Change_ProcessRecord_Products" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.id"			VALUE = "{ Original.d.id }">
	<MvASSIGN NAME = "Temporary.d.catcount"		VALUE = "{ Original.d.catcount }">
	<MvASSIGN NAME = "Temporary.d.agrpcount"	VALUE = "{ Original.d.agrpcount }">
	<MvASSIGN NAME = "Temporary.d.pgrpcount"	VALUE = "{ Original.d.pgrpcount }">
	<MvASSIGN NAME = "Temporary.d.order"		VALUE = "{ Original.d.order }">
	<MvASSIGN NAME = "Temporary.d.code"			VALUE = "{ Original.d.code }">
	<MvASSIGN NAME = "Temporary.d.name"			VALUE = "{ Original.d.name }">
	<MvASSIGN NAME = "Temporary.d.thumbnail"	VALUE = "{ Original.d.thumbnail }">
	<MvASSIGN NAME = "Temporary.d.image"		VALUE = "{ Original.d.image }">
	<MvASSIGN NAME = "Temporary.d.price"		VALUE = "{ Original.d.price }">
	<MvASSIGN NAME = "Temporary.d.cost"			VALUE = "{ Original.d.cost }">
	<MvASSIGN NAME = "Temporary.d.desc"			VALUE = "{ Original.d.desc }">
	<MvASSIGN NAME = "Temporary.d.weight"		VALUE = "{ Original.d.weight }">
	<MvASSIGN NAME = "Temporary.d.taxable"		VALUE = "{ Original.d.taxable }">
	
	<MvIF EXPR = "{ g.Upgrade_Version_From LT 3.00 }">
		<MvASSIGN NAME = "Temporary.d.active"		VALUE = 1>
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.active"		VALUE = "{ Original.d.active }">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Change_ProcessRecord_Categories" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.id"			VALUE = "{ Original.d.id }">
	<MvASSIGN NAME = "Temporary.d.parent_id"	VALUE = "{ Original.d.parent_id }">
	<MvASSIGN NAME = "Temporary.d.agrpcount"	VALUE = "{ Original.d.agrpcount }">
	<MvASSIGN NAME = "Temporary.d.order"		VALUE = "{ Original.d.order }">
	<MvASSIGN NAME = "Temporary.d.code"			VALUE = "{ Original.d.code }">
	<MvASSIGN NAME = "Temporary.d.name"			VALUE = "{ Original.d.name }">

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 3.00 }">
		<MvASSIGN NAME = "Temporary.d.active"	VALUE = 1>
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.active"	VALUE = "{ Original.d.active }">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Change_ProcessRecord_BasketList" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.session_id"	VALUE = "{ Original.d.session_id }">
	<MvASSIGN NAME = "Temporary.d.cust_id"		VALUE = "{ Original.d.cust_id }">
	<MvASSIGN NAME = "Temporary.d.basket_id"	VALUE = "{ Original.d.basket_id }">
	<MvASSIGN NAME = "Temporary.d.lastupdate"	VALUE = "{ Original.d.lastupdate }">
	<MvASSIGN NAME = "Temporary.d.order_id"		VALUE = "{ Original.d.order_id }">
	<MvASSIGN NAME = "Temporary.d.order_proc"	VALUE = "{ Original.d.order_proc }">
	<MvASSIGN NAME = "Temporary.d.ship_fname"	VALUE = "{ Original.d.ship_fname }">
	<MvASSIGN NAME = "Temporary.d.ship_lname"	VALUE = "{ Original.d.ship_lname }">
	<MvASSIGN NAME = "Temporary.d.ship_email"	VALUE = "{ Original.d.ship_email }">
	<MvASSIGN NAME = "Temporary.d.ship_comp"	VALUE = "{ Original.d.ship_comp }">
	<MvASSIGN NAME = "Temporary.d.ship_phone"	VALUE = "{ Original.d.ship_phone }">
	<MvASSIGN NAME = "Temporary.d.ship_fax"		VALUE = "{ Original.d.ship_fax }">
	<MvASSIGN NAME = "Temporary.d.ship_addr"	VALUE = "{ Original.d.ship_addr }">
	<MvASSIGN NAME = "Temporary.d.ship_city"	VALUE = "{ Original.d.ship_city }">
	<MvASSIGN NAME = "Temporary.d.ship_state"	VALUE = "{ Original.d.ship_state }">
	<MvASSIGN NAME = "Temporary.d.ship_zip"		VALUE = "{ Original.d.ship_zip }">
	<MvASSIGN NAME = "Temporary.d.ship_cntry"	VALUE = "{ Original.d.ship_cntry }">
	<MvASSIGN NAME = "Temporary.d.bill_fname"	VALUE = "{ Original.d.bill_fname }">
	<MvASSIGN NAME = "Temporary.d.bill_lname"	VALUE = "{ Original.d.bill_lname }">
	<MvASSIGN NAME = "Temporary.d.bill_email"	VALUE = "{ Original.d.bill_email }">
	<MvASSIGN NAME = "Temporary.d.bill_comp"	VALUE = "{ Original.d.bill_comp }">
	<MvASSIGN NAME = "Temporary.d.bill_phone"	VALUE = "{ Original.d.bill_phone }">
	<MvASSIGN NAME = "Temporary.d.bill_fax"		VALUE = "{ Original.d.bill_fax }">
	<MvASSIGN NAME = "Temporary.d.bill_addr"	VALUE = "{ Original.d.bill_addr }">
	<MvASSIGN NAME = "Temporary.d.bill_city"	VALUE = "{ Original.d.bill_city }">
	<MvASSIGN NAME = "Temporary.d.bill_state"	VALUE = "{ Original.d.bill_state }">
	<MvASSIGN NAME = "Temporary.d.bill_zip"		VALUE = "{ Original.d.bill_zip }">
	<MvASSIGN NAME = "Temporary.d.bill_cntry"	VALUE = "{ Original.d.bill_cntry }">
	<MvASSIGN NAME = "Temporary.d.tax"			VALUE = "{ Original.d.tax }">
	<MvASSIGN NAME = "Temporary.d.shipping"		VALUE = "{ Original.d.shipping }">
	<MvASSIGN NAME = "Temporary.d.ship_id"		VALUE = "{ Original.d.ship_id }">
	<MvASSIGN NAME = "Temporary.d.ship_data"	VALUE = "{ Original.d.ship_data }">
	<MvASSIGN NAME = "Temporary.d.pay_id"		VALUE = "{ Original.d.pay_id }">
	<MvASSIGN NAME = "Temporary.d.pay_data"		VALUE = "{ Original.d.pay_data }">
	<MvASSIGN NAME = "Temporary.d.total"		VALUE = "{ Original.d.total }">

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Change_ProcessRecord_Baskets" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.id"			VALUE = "{ Original.d.id }">
	<MvASSIGN NAME = "Temporary.d.line_id"		VALUE = "{ Original.d.line_id }">
	<MvASSIGN NAME = "Temporary.d.product_id"	VALUE = "{ Original.d.product_id }">
	<MvASSIGN NAME = "Temporary.d.code"			VALUE = "{ Original.d.code }">
	<MvASSIGN NAME = "Temporary.d.name"			VALUE = "{ Original.d.name }">
	<MvASSIGN NAME = "Temporary.d.price"		VALUE = "{ Original.d.price }">
	<MvASSIGN NAME = "Temporary.d.weight"		VALUE = "{ Original.d.weight }">
	<MvASSIGN NAME = "Temporary.d.taxable"		VALUE = "{ Original.d.taxable }">
	<MvASSIGN NAME = "Temporary.d.upsold"		VALUE = "{ Original.d.upsold }">
	<MvASSIGN NAME = "Temporary.d.quantity"		VALUE = "{ Original.d.quantity }">

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Change_ProcessRecord_BasketOptions" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.line_id"		VALUE = "{ Original.d.line_id }">
	<MvASSIGN NAME = "Temporary.d.attr_id"		VALUE = "{ Original.d.attr_id }">
	<MvASSIGN NAME = "Temporary.d.attr_code"	VALUE = "{ Original.d.attr_code }">
	<MvASSIGN NAME = "Temporary.d.option_id"	VALUE = "{ Original.d.option_id }">
	<MvASSIGN NAME = "Temporary.d.opt_code"		VALUE = "{ Original.d.opt_code }">
	<MvASSIGN NAME = "Temporary.d.price"		VALUE = "{ Original.d.price }">
	<MvASSIGN NAME = "Temporary.d.data"			VALUE = "{ Original.d.data }">

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 3.00 }">
		<MvASSIGN NAME = "Temporary.d.data_long"	VALUE = "">
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.data_long"	VALUE = "{ Original.d.data_long }">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Store_DB_Change_ProcessRecord_OrderOptions" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "Temporary.d.line_id"		VALUE = "{ Original.d.line_id }">
	<MvASSIGN NAME = "Temporary.d.attr_id"		VALUE = "{ Original.d.attr_id }">
	<MvASSIGN NAME = "Temporary.d.attr_code"	VALUE = "{ Original.d.attr_code }">
	<MvASSIGN NAME = "Temporary.d.option_id"	VALUE = "{ Original.d.option_id }">
	<MvASSIGN NAME = "Temporary.d.opt_code"		VALUE = "{ Original.d.opt_code }">
	<MvASSIGN NAME = "Temporary.d.price"		VALUE = "{ Original.d.price }">
	<MvASSIGN NAME = "Temporary.d.data"			VALUE = "{ Original.d.data }">

	<MvIF EXPR = "{ g.Upgrade_Version_From LT 3.00 }">
		<MvASSIGN NAME = "Temporary.d.data_long"	VALUE = "">
	<MvELSE>
		<MvASSIGN NAME = "Temporary.d.data_long"	VALUE = "{ Original.d.data_long }">
	</MvIF>

	<MvADD NAME = "Temporary">
	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Domain_Copy_Scripts" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.ok" VALUE = "{ Upgrade_SCopy( g.Version_Path $ 'merchant.mv-stub', 'merchant.mv' ) }">
	<MvIF EXPR = "{ l.ok }">
		<MvASSIGN NAME = "l.ok" VALUE = "{ Upgrade_SCopy( g.Version_Path $ 'admin.mv-stub', 'admin.mv' ) }">
	</MvIF>

	<MvIF EXPR = "{ l.ok }">
		<MvASSIGN NAME = "l.ok" VALUE = "{ Upgrade_SCopy( g.Version_Path $ 'remove.mv-stub', 'remove.mv' ) }">
	</MvIF>

	<MvIF EXPR = "{ l.ok }">
		<MvASSIGN NAME = "l.ok" VALUE = "{ Upgrade_SCopy( g.Version_Path $ 'paylinkp.mv-stub', 'paylinkp.mv' ) }">
	</MvIF>

	<MvIF EXPR = "{ l.ok }">
		<MvASSIGN NAME = "l.ok" VALUE = "{ Upgrade_SCopy( g.Version_Path $ 'paylinki.mv-stub', 'paylinki.mv' ) }">
	</MvIF>

	<MvIF EXPR = "{ l.ok }">
		<MvASSIGN NAME = "l.ok" VALUE = "{ Upgrade_SCopy( g.Version_Path $ 'anacomp.mv-stub', 'anacomp.mv' ) }">
	</MvIF>
	
	<MvASSIGN NAME = "g.Overall_Pos" VALUE = "{ g.Overall_Pos + 1 }">

	<MvFUNCTIONRETURN VALUE = "l.ok">
</MvFUNCTION>



<MvFUNCTION NAME = "JavaScriptEncode" PARAMETERS = "field" STANDARDOUTPUTLEVEL = "">
	<MvFUNCTIONRETURN VALUE = "{ glosub( encodeentities( l.field ), '\'', '\\\'' ) }">
</MvFUNCTION>

<MvFUNCTION NAME = "DrawImgButton_Upload" PARAMETERS = "pressed" STANDARDOUTPUTLEVEL = "">
	<MvLOCALIZED NAME = "l.alt" ID = "MER-ADM-00730">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upload File</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Datei auf den Server �bertragen</MvLOCALIZED-TEXT>
	</MvLOCALIZED>

	<MvIF EXPR = "{ l.pressed }">
		<MvASSIGN NAME = "l.image" VALUE = "{ g.AdminGraphics_Path $ 'upload.gif' }">
	<MvELSE>
		<MvASSIGN NAME = "l.image" VALUE = "{ g.AdminGraphics_Path $ 'upload.gif' }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = "{ '<IMG ALT = "' $ l.alt $ '" BORDER = 0 SRC = "' $ l.image $ '">' }">
</MvFUNCTION>

<MvFUNCTION NAME = "Miva_ValidateFileUpload" PARAMETERS = "field, filename, content_type" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.ok" VALUE = 1>
	<MvASSIGN NAME = "l.maxfilesize" VALUE = "-1">

	<MvIF EXPR = "{ l.ok }">
debug validate user
		<MvIF EXPR = "{ ( g.FileUpload_Type EQ 'Module' ) }">
			<MvASSIGN NAME = "l.maxfilesize" VALUE = 0>
		</MvIF>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = "{ l.maxfilesize }">
</MvFUNCTION>

<MvFUNCTION NAME = "Miva_ProcessFileUpload" PARAMETERS = "field, filename, status, tempfile, content_type, size" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.ok" VALUE = "1">
	<MvASSIGN NAME = "g.sessionurl" VALUE = "{ s.documenturl }">
	<MvDO FILE = "4.00/lib/config.mv">
	<MvASSIGN NAME = "g.Upgrade_Filename_Admin" VALUE = "{ g.Version_Path $ g.Filename_Admin }">
	<MvASSIGN NAME = "g.Upgrade_Library_Utilities" VALUE = "{ g.Version_Path $ g.Library_Utilities }">
	<MvASSIGN NAME = "g.Upgrade_Library_DB" VALUE = "{ g.Version_Path $ g.Library_DB }">

	<MvOPEN NAME = "Domain" DATABASE = "{ g.MerchantPath $ 'domain.dbf' }">
	<MvIF EXPR = "{ 'https://' IN g.sessionurl }">
		<MvASSIGN NAME = "g.Secure" VALUE = 1>
	<MvELSE>
		<MvASSIGN NAME = "g.Secure" VALUE = 0>
	</MvIF>

	<MvIF EXPR = "{ g.Secure }">
		<MvASSIGN NAME = "g.Module_Root_Versionless" VALUE = "{ Domain.d.mod_sroot }">
	<MvELSE>
		<MvASSIGN NAME = "g.Module_Root_Versionless" VALUE = "{ Domain.d.mod_root }">
	</MvIF>

	<MvIF EXPR = "{ Upgrade_Numeric_Version( Domain.d.version ) LT '4.00' }">
		<MvASSIGN NAME = "g.Old_Module_Root" VALUE = "{ g.Module_Root_Versionless }">
	<MvELSE>
		<MvASSIGN NAME = "g.Old_Module_Root" VALUE = "{ g.Module_Root $ Upgrade_Numeric_Version( Domain.d.version ) $ '/' }">
	</MvIF>

	<MvASSIGN NAME = "g.Module_Root" VALUE = "{ g.Module_Root_Versionless $ g.Version_Path }">

	<MvDO FILE = "{ g.Upgrade_Library_Utilities }" NAME = "l.ok" VALUE = "{ SetPaths() }">

	<MvIF EXPR = "{ l.status EQ 'COMPLETE' }">
		<MvASSIGN NAME = "l.filename_nopath" VALUE = "{ glosub( l.filename, '\\', '/' ) }">
		<MvASSIGN NAME = "l.pos" VALUE = "{ '/' IN l.filename_nopath }">
		<MvASSIGN NAME = "l.len" VALUE = "{ len( l.filename_nopath ) }">

		<MvWHILE EXPR = "{ l.pos }">
			<MvASSIGN NAME = "l.filename_nopath" VALUE = "{ substring( l.filename_nopath, l.pos + 1, len( l.filename_nopath ) - l.pos ) }">

			<MvASSIGN NAME = "l.pos" VALUE = "{ '/' IN l.filename_nopath }">
			<MvASSIGN NAME = "l.len" VALUE = "{ len( l.filename_nopath ) }">
		</MvWHILE>

		<MvIF EXPR = "{ g.FileUpload_Type EQ 'Module' }">
			<MvASSIGN NAME = "l.ok" VALUE = "{ ProcessFileUpload_Module( l.tempfile, l.filename_nopath ) }">
		</MvIF>
	</MvIF>
	
	<MvCLOSE NAME = "Domain">
	
	<MvIF EXPR = "{ NOT l.ok }">
		<MvASSIGN NAME = "g.Error" VALUE = 1>
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "ProcessFileUpload_Module" PARAMETERS = "tempfile, filename_nopath" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.ok" VALUE = "{ fscopy( l.tempfile, g.Module_Root $ l.tempfile ) }">
	<MvIF EXPR = "{ NOT l.ok }">
		<MvLOCALIZED NAME = "g.FileUpload_Error" ID = "MER-ADM-00017">
			<MvLOCALIZED-TOKEN NAME = "tempfile" VALUE = "{ l.tempfile }">
			<MvLOCALIZED-TOKEN NAME = "modulefile" VALUE = "{ g.Module_Root $ l.tempfile }">
			<MvLOCALIZED-TEXT LANGUAGE = "en-US">Unable to copy '%tempfile%' to '%modulefile%'</MvLOCALIZED-TEXT>
			<MvLOCALIZED-TEXT LANGUAGE = "de-DE">'%tempfile%' kann nicht zu '%modulefile%' kopiert werden</MvLOCALIZED-TEXT>
		</MvLOCALIZED>
	<MvELSE>
		<MvDO FILE = "{ g.Module_Root $ l.tempfile }" NAME = "l.module_type" VALUE = "{ Module_Type() }">
		<MvDO FILE = "{ g.Module_Root $ l.tempfile }" NAME = "l.module_code" VALUE = "{ Module_Code() }">
		<MvDO FILE = "{ g.Module_Root $ l.tempfile }" NAME = "l.module_name" VALUE = "{ Module_Name() }">
		<MvDO FILE = "{ g.Module_Root $ l.tempfile }" NAME = "l.module_provider" VALUE = "{ Module_Provider() }">
		<MvDO FILE = "{ g.Module_Root $ l.tempfile }" NAME = "l.module_api_version" VALUE = "{ Module_API_Version() }">
		<MvDO FILE = "{ g.Module_Root $ l.tempfile }" NAME = "l.module_version_number" VALUE = "{ Module_Version() }">

		<MvCOMMENT>
			<MvIF EXPR = "{ NOT g.FileUpload_Error }">
				<MvIF EXPR = "{ len( g.FileUpload_Data ) }">
					<MvDO FILE = "{ g.Library_DB }" NAME = "l.found" VALUE = "{ Module_Find_Code( g.FileUpload_Data ) }">
					<MvIF EXPR = "{ l.found }">
						<MvIF EXPR = "{ Modules.d.code NE l.module_code }">
							<MvLOCALIZED NAME = "g.FileUpload_Error" ID = "MER-ADM-00018">
								<MvLOCALIZED-TOKEN NAME = "modulename" VALUE = "{ Modules.d.name }">
								<MvLOCALIZED-TOKEN NAME = "filename" VALUE = "{ l.filename_nopath }">
								<MvLOCALIZED-TEXT LANGUAGE = "en-US">Module '%modulesname%' cannot be upgraded by '%filename%'</MvLOCALIZED-TEXT>
								<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Modul '%modulesname%' kann nicht mit '%filename%' aktualisiert werden</MvLOCALIZED-TEXT>
							</MvLOCALIZED>
						<MvELSE>
							<MvIF EXPR = "{ Modules.d.version GT l.module_version_number }">
								<MvLOCALIZED NAME = "g.FileUpload_Error" ID = "MER-ADM-00019">
									<MvLOCALIZED-TOKEN NAME = "filename" VALUE = "{ l.filename_nopath }">
									<MvLOCALIZED-TOKEN NAME = "moduleversion" VALUE = "{ l.module_version_number }">
									<MvLOCALIZED-TOKEN NAME = "installedversion" VALUE = "{ Modules.d.version }">
									<MvLOCALIZED-TEXT LANGUAGE = "en-US">The file '%filename%' is version %moduleversion%, which is older than the installed version, %installedversion%</MvLOCALIZED-TEXT>
									<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Datei '%filename%' ist die Version %moduleversion%, die �lter als die installierte Version %installedversion% ist</MvLOCALIZED-TEXT>
								</MvLOCALIZED>
							</MvIF>
						</MvIF>
					</MvIF>
				<MvELSE>
					<MvDO FILE = "{ g.Library_DB }" NAME = "l.found" VALUE = "{ Module_Find_Code( l.module_code ) }">
					<MvIF EXPR = "{ l.found }">
						<MvIF EXPR = "{ Modules.d.version GT l.module_version_number }">
							<MvLOCALIZED NAME = "g.FileUpload_Error" ID = "MER-ADM-00020">
								<MvLOCALIZED-TOKEN NAME = "filename" VALUE = "{ l.filename_nopath }">
								<MvLOCALIZED-TOKEN NAME = "moduleversion" VALUE = "{ l.module_version_number }">
								<MvLOCALIZED-TOKEN NAME = "installedversion" VALUE = "{ Modules.d.version }">
								<MvLOCALIZED-TEXT LANGUAGE = "en-US">The file '%filename%' is version %moduleversion%, which is older than the installed version, %installedversion%</MvLOCALIZED-TEXT>
								<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Datei '%filename%' ist die Version %moduleversion%, die �lter als die installierte Version %installedversion% ist</MvLOCALIZED-TEXT>
							</MvLOCALIZED>
						</MvIF>
					</MvIF>
				</MvIF>
			</MvIF>
		</MvCOMMENT>

		<MvIF EXPR = "{ NOT g.FileUpload_Error }">
			<MvASSIGN NAME = "l.path" VALUE = "{ g.Module_Path }">

			<MvIF EXPR = "{ l.module_type EQ 'UI' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'ui/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'CURRENCY' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'currency/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'TAX' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'tax/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'SHIPPING' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'shipping/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'PAYMENT' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'payment/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'FULFILLMENT' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'fulfill/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'BATCHREPORT' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'batch/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'IMPORT' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'import/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'EXPORT' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'export/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'LOG' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'log/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'SYSTEM' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'system/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'STOREUTIL' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'util/' }">
			</MvIF>

			<MvIF EXPR = "{ l.module_type EQ 'WIZARD' OR l.module_type EQ 'STOREWIZARD' }">
				<MvASSIGN NAME = "l.path" VALUE = "{ l.path $ 'wizard/' }">
			</MvIF>

			<MvIF EXPR = "{ NOT( sexists( g.Module_Root $ l.path ) ) }">
				<MvASSIGN NAME = "l.ok" VALUE = "{ smkdir( g.Module_Root $ l.path ) }">
				<MvIF EXPR = "{ NOT l.ok }">
					<MvLOCALIZED NAME = "g.FileUpload_Error" ID = "MER-ADM-00021">
						<MvLOCALIZED-TOKEN NAME = "directory" VALUE = "{ g.Module_Root $ l.path }">
						<MvLOCALIZED-TEXT LANGUAGE = "en-US">Unable to create directory '%directory%'</MvLOCALIZED-TEXT>
						<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Verzeichnis '%directory%' kann nicht erstellt werden</MvLOCALIZED-TEXT>
					</MvLOCALIZED>
				</MvIF>
			</MvIF>

			<MvIF EXPR = "{ l.ok }">
				<MvIF EXPR = "{ sexists( g.Module_Root $ l.path $ l.filename_nopath ) AND ( g.FileUpload_Overwrite NE 'Yes' ) }">
					<MvLOCALIZED NAME = "g.FileUpload_Error" ID = "MER-ADM-00741">
						<MvLOCALIZED-TOKEN NAME = "file" VALUE = "{ g.Module_Root $ l.path $ l.filename_nopath }">
						<MvLOCALIZED-TEXT LANGUAGE = "en-US">The file %file% already exists</MvLOCALIZED-TEXT>
						<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Die Datei %file% ist bereits vorhanden</MvLOCALIZED-TEXT>
					</MvLOCALIZED>
				<MvELSE>
					<MvASSIGN NAME = "l.ok" VALUE = "{ scopy( g.Module_Root $ l.tempfile, g.Module_Root $ l.path $ l.filename_nopath ) }">
					<MvIF EXPR = "{ NOT l.ok }">
						<MvLOCALIZED NAME = "g.FileUpload_Error" ID = "MER-ADM-00022">
							<MvLOCALIZED-TOKEN NAME = "source" VALUE = "{ g.Module_Root $ l.tempfile }">
							<MvLOCALIZED-TOKEN NAME = "destination" VALUE = "{ g.Module_Root $ l.path $ l.filename_nopath }">
							<MvLOCALIZED-TEXT LANGUAGE = "en-US">Unable to copy '%source%' to '%destination%'</MvLOCALIZED-TEXT>
							<MvLOCALIZED-TEXT LANGUAGE = "de-DE">'%source%' kann nicht zu '%destination%' kopiert werden</MvLOCALIZED-TEXT>
						</MvLOCALIZED>
					<MvELSE>
						<MvASSIGN NAME = "g.FileUpload_Path" VALUE = "{ l.path $ l.filename_nopath }">
					</MvIF>
				</MvIF>
			</MvIF>
		</MvIF>

		<MvASSIGN NAME = "l.deleted" VALUE = "{ sdelete( g.Module_Root $ l.tempfile ) }">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Action_FileUpload" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvIF EXPR = "{ len( g.FileUpload_Error ) }">
		<MvASSIGN NAME = "l.error" VALUE = "{ Upgrade_FieldError( '', 'FileUpload_File', g.FileUpload_Error ) }">
	<MvELSE>
	<MvCOMMENT>
		<MvEVAL EXPR = "{ '<SCRIPT LANGUAGE = "JavaScript">' $ asciichar( 10 ) $
						  '<!--' $ asciichar( 10 ) $
						  'opener.document.' $ encodeattributes( g.FileUpload_Form ) $ '.' $ encodeattributes( g.FileUpload_Field ) $ '.value = \'' $ JavaScriptEncode( g.FileUpload_Path ) $ '\';' $ asciichar( 10 ) $
						  'window.close()' $ asciichar( 10 ) $
						  '//-->' $ asciichar( 10 ) $
						  '</SCRIPT>' }">
	</MvCOMMENT>
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Screen_FileUpload" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<HEAD>
	<META HTTP-EQUIV = "pragma" CONTENT = "no-cache">

	<SCRIPT LANGUAGE = "JavaScript">
<!--
function FieldError( field, message )
{
	document.forms[ Screen ].elements[ field ].select();
	document.forms[ Screen ].elements[ field ].focus();
	alert( message );
}
//-->
	</SCRIPT>
	<TITLE>
	<MvLOCALIZED ID = "MER-ADM-00742">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upload File</MvLOCALIZED-TEXT>
		<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Datei �bertragen</MvLOCALIZED-TEXT>
	</MvLOCALIZED>
	</TITLE>

	<MvIF EXPR = "{ g.Secure }">
		<BASE HREF = "{ g.secure_baseurl }">
	<MvELSE>
		<BASE HREF = "{ g.baseurl }">
	</MvIF>
	</HEAD>

	<MvIF EXPR = "{ len( g.Error_Field ) }">
		<MvEVAL EXPR = "{ '<BODY BGCOLOR = "#ffffff" ONLOAD = "FieldError( \'' $ JavaScriptEncode( g.Error_Field ) $ '\', \'' $ JavaScriptEncode( g.Error_Field_Message ) $ '\' );">' }">
	<MvELSE>
		<BODY BGCOLOR = "#ffffff">
	</MvIF>

	<FORM NAME = "{ encodeentities( g.Screen ) }" ENCTYPE = "multipart/form-data" METHOD = "POST" ACTION = "{ g.sessionurl }">
	<INPUT TYPE = "hidden" NAME = "Screen" VALUE = "FUPL">
	<INPUT TYPE = "hidden" NAME = "Action" VALUE = "FUPL">
	<INPUT TYPE = "hidden" NAME = "Tab" VALUE = "">
	<INPUT TYPE = "hidden" NAME = "Have_Fields" VALUE = "">

	<MvIF EXPR = "{ len( g.Store_Code ) }">
		<MvHIDE FIELDS = "g.Store_Code">
	</MvIF>

	<MvCOMMENT> Title </MvCOMMENT>
	<TABLE BORDER = 0 CELLPADDING = 1 CELLSPACING = 0 WIDTH = "100%">
	<TR><TD BGCOLOR = "#000000">
		<TABLE BORDER = 0 CELLPADDING = 5 CELLSPACING = 0 WIDTH = "100%">
		<TR><TD BGCOLOR = "#f0f0f0" WIDTH = "100%">
			<FONT FACE = "Arial, Helvetica"><B>
				<MvLOCALIZED ID = "MER-ADM-00030">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US">Upload File</MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE">Datei auf den Server �bertragen</MvLOCALIZED-TEXT>
				</MvLOCALIZED>
			</B></FONT>
		</TD></TR>
		</TABLE>
	</TD></TR>
	</TABLE>
	<BR>

	<MvHIDE FIELDS = "g.FileUpload_Form, g.FileUpload_Field, g.FileUpload_Type, g.FileUpload_Data">

	<TABLE BORDER = 0 CELLPADDING = 1 CELLSPACING = 0 WIDTH = "100%">
	<TR><TD BGCOLOR = "#000000">
		<TABLE BORDER = 0 CELLPADDING = 5 CELLSPACING = 0 WIDTH = "100%">
		<TR><TD BGCOLOR = "#f0f0f0">
			<TABLE BORDER = 0 CELLPADDING = 2 CELLSPACING = 0>
			<TR><TD>
				&nbsp;
			</TD><TD VALIGN = "middle">
				<FONT FACE = "Arial, Helvetica" SIZE = "-1"><B>
				<MvLOCALIZED NAME = "l.text" ID = "MER-ADM-00031">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US">Overwrite</MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE">�berschreiben</MvLOCALIZED-TEXT>
				</MvLOCALIZED>
				<MvDO FILE = "{ g.Library_Utilities }" NAME = "l.foo" VALUE = "{ DrawCheckbox( g.FileUpload_Overwrite, 'FileUpload_Overwrite', 'Yes', l.text ) }">

				</B></FONT>
			</TD></TR>

			<TR><TD>
				<FONT FACE = "Arial, Helvetica" SIZE = "-1">
				<MvLOCALIZED ID = "MER-ADM-00830">
					<MvLOCALIZED-TEXT LANGUAGE = "en-US"><B>File:</B></MvLOCALIZED-TEXT>
					<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><B>Datei:</B></MvLOCALIZED-TEXT>
				</MvLOCALIZED>
				</FONT>
			</TD><TD WIDTH = "100%">
				<FONT FACE = "Arial, Helvetica" SIZE = "-1">
				<INPUT TYPE = "file" SIZE = "40" NAME = "FileUpload_File">
				</FONT>
			</TD></TR>
			</TABLE>
		</TD></TR>
		</TABLE>
	</TD></TR>
	</TABLE>
	<BR>

	<TABLE BORDER = 0 CELLPADDING = 1 CELLSPACING = 0 WIDTH = "100%">
	<TR><TD BGCOLOR = "#000000">
		<TABLE BORDER = 0 CELLPADDING = 5 CELLSPACING = 0 WIDTH = "100%">
		<TR><TD BGCOLOR = "#f0f0f0" WIDTH = "100%">
			&nbsp;
		</TD><TD BGCOLOR = "#f0f0f0" ALIGN = "right">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-ADM-00743">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><INPUT TYPE = "submit" VALUE = "Upload"></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><INPUT TYPE = "submit" VALUE = "�bertragen"></MvLOCALIZED-TEXT>
			</MvLOCALIZED>
			</FONT>
		</TD><TD BGCOLOR = "#f0f0f0" ALIGN = "right">
			<FONT FACE = "Arial, Helvetica" SIZE = "-1">
			<MvLOCALIZED ID = "MER-ADM-00744">
				<MvLOCALIZED-TEXT LANGUAGE = "en-US"><INPUT TYPE = "button" VALUE = "Cancel" ONCLICK = "window.close();"></MvLOCALIZED-TEXT>
				<MvLOCALIZED-TEXT LANGUAGE = "de-DE"><INPUT TYPE = "button" VALUE = "Abbrechen" ONCLICK = "window.close();"></MvLOCALIZED-TEXT>
			</MvLOCALIZED>
			</FONT>
		</TD></TR>
		</TABLE>
	</TD></TR>
	</FORM>
	</TABLE>
	</FORM>
	</BODY>
	<MvIF EXPR = "{ g.EndScreen }">
		<MvFUNCTIONRETURN VALUE = "1">
	</MvIF>

	<MvFUNCTIONRETURN VALUE = 1>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Parse_Boolean" PARAMETERS = "flag" STANDARDOUTPUTLEVEL = "">
	<MvASSIGN NAME = "l.flag" VALUE = "{ toupper( substring( ltrim( flag ), 1, 1 ) ) }">
	<MvIF EXPR = "{ l.flag EQ 'Y' }">
		<MvFUNCTIONRETURN VALUE = "1">
	<MvELSE>
		<MvFUNCTIONRETURN VALUE = "0">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Deactivate_Skipped_Modules" STANDARDOUTPUTLEVEL = "text, html, compresswhitespace">
	<MvASSIGN NAME = "l.ok" VALUE = "1">

	<MvIF EXPR = "{ len( g.skip ) }">
		<MvOPEN NAME = "Modules"
				DATABASE = "{ g.MerchantPath $ 'modules.dbf' }"
				INDEXES = "{ g.MerchantPath $ 'mod_id.mvx, ' $
							 g.MerchantPath $ 'mod_code.mvx, ' $
							 g.MerchantPath $ 'mod_type.mvx' }">
		<MvIF EXPR = "{ MvOPEN_Error }">
			<MvDO FILE = "{ g.Library_Filename_Utilities }" NAME = "l.ok" VALUE = "{ Error( 'MER-DTB-00032', MvOPEN_Error ) }">
		<MvELSE>
			<MvFILTER NAME = "Modules" FILTER = "{ NOT Modules.d.deleted }">

			<MvGO NAME = "Modules" ROW = "top">

			<MvWHILE EXPR = "{ NOT modules.d.EOF }">	
				<MvIF EXPR = "{ Modules.d.active }">
					<MvIF EXPR = "{ ':' $ Modules.d.id $ ':' IN g.Skip }">
						<MvASSIGN NAME = "Modules.d.active" VALUE = "0">
						<MvUPDATE NAME = "Modules">
					</MvIF>
				</MvIF>
				<MvSKIP NAME = "Modules" ROWS = 1>
			</MvWHILE>
		</MvIF>
	</MvIF>
	<MvFUNCTIONRETURN VALUE = "{ l.ok }">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Intercept">
	<debug this should be 4.0 after testing>
	<MvASSIGN NAME = "l.upgrade_version" VALUE = "4.00">
	
	<MvIF EXPR = "{ Upgrade_Numeric_Version( Domain.d.version ) GE l.upgrade_version }">
		<MvFUNCTIONRETURN VALUE = "1">
	</MvIF>
	
	<MvASSIGN NAME = "l.foo" VALUE = "{ Upgrade_Load_ISP_Defaults() }">
	
	<MvIF EXPR = "{ ( NOT g.Upgrade_ISP_Force_Upgrade ) AND ( Domain.d.upgd_ignr GE l.upgrade_version ) }">
		<MvFUNCTIONRETURN VALUE = "1">
	</MvIF>
	
	<MvEVAL EXPR = "{ Upgrade_Setup_Redirect_JavaScript() }">
	<SCRIPT LANGUAGE = "JavaScript">
<!--
		redirect_to_upgrade();
//-->
	</SCRIPT>
	<MvEXIT>
	
	<MvFUNCTIONRETURN VALUE = "1">
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Notification_Request">
	<MvASSIGN NAME = "l.upgrade_version" VALUE = "4.00">
	<MvIF EXPR = "{ Upgrade_Numeric_Version( Domain.d.version ) LT l.upgrade_version }">
		<MvFUNCTIONRETURN VALUE = "1">
	<MvELSE>
		<MvFUNCTIONRETURN VALUE = "0">
	</MvIF>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Notification_Line">
	<MvEVAL EXPR = "{ Upgrade_Setup_Redirect_JavaScript() }">
	<MvLOCALIZED NAME = "l.upgrade_message" ID = "MER-UPG-00152">
		<MvLOCALIZED-TEXT LANGUAGE = "en-US">Click here to upgrade to Miva Merchant 4.0</MvLOCALIZED-TEXT>
	</MvLOCALIZED>
	<A HREF = "JavaScript:redirect_to_upgrade()"><MvEVAL EXPR = "{ l.upgrade_message }"></A>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Setup_Redirect_JavaScript">
	<MvASSIGN NAME = "g.target_url" VALUE = "{ g.secure_baseurl $ 'upgrade.mv?Session_ID=' $ g.Session_ID $ '&UpgradeFromAdmin=Yes' }">
	<MvDO FILE = "{ g.Module_Admin }" NAME = "l.javascript" VALUE = "{ JavaScript_SetVariables( 'g', 'target_url' ) }">
	<MvEVAL EXPR = "{l.javascript}">
		<SCRIPT LANGUAGE = "JavaScript">
<!--
	function redirect_to_upgrade()
	{
		parent.location = target_url;
	}
//-->
		</SCRIPT>
</MvFUNCTION>

<MvFUNCTION NAME = "Upgrade_Numeric_Version" PARAMETERS = "version">
	<MvASSIGN NAME = "l.pos" VALUE = "{ 'u' CIN l.version }">
	<MvIF EXPR = "{ l.pos }">
		<MvFUNCTIONRETURN VALUE = "{ substring( l.version, 1, l.pos - 1 ) }">
	<MvELSE>
		<MvFUNCTIONRETURN VALUE = "{ l.version }">
	</MvIF>
</MvFUNCTION>

Youez - 2016 - github.com/yon3zu
LinuXploit